SQL ServerGeographyデータからSilverlightXAMLに変換するときに問題が発生します。
/* Database query spatial data structure for the SQL Server spatial data types object */
var geo = SqlGeography.STGeomFromText (new SqlChars(new SqlString(polygon.ToString())), 4326);
/* Spatial data structure for the Bing Maps graphical objects (polygons) XAML text, to resolve Xaml directly returned to the client in the Silverlight application object. */
for (int j = 0; j < geo.NumRings(); j++)
問題:geo.NumRings()メソッドはnullを返しますが、ポリゴンオブジェクト内に2つのリングがあります。
以下の印刷画面はよりよく説明するはずです
あなたの画像は、ポリゴンの配列であるMultiPolygonを示しています。各ポリゴンにはリングの配列があります。そのため、ジオメトリがマルチシェイプの場合、その子ジオメトリのそれぞれをループして解析する必要があります。STNumGeometriesメソッドとSTGeometryNメソッドを使用して、子ジオメトリをループできます。
とはいえ、Silverlightで開発を行うことはお勧めしません。ここに記載されているように、Bing MapsSilverlightコントロールは11月に非推奨になります。
最新のBingMaps JavaScriptコントロール(V8)は、SqlGeographyオブジェクトへの接続もはるかに簡単であり、Silverlightコントロールよりもはるかに高速です。V8コントロールにはWellKnown Textモジュールが組み込まれています。つまり、geom.STAsTextを実行し、そのデータをJavaScriptでこのモジュールに返すだけで、マップ上に形状を非常に簡単にレンダリングできます。Bing Maps Silverlightコントロールは、遅くなる前に約1MBまたは2MBのポリゴンデータを処理できますが、V8コントロールは40MBを超えるデータでテストされており、2MBのデータをロードした場合のSilverlightコントロールよりも優れたパフォーマンスを発揮します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加