0

シナリオは次のとおりです。

  • 有効な GeoRSS フィードを出力する WCF Web サービスが存在します。これは、多数の異なるアプリケーションがアクセスできるため、独自のドメインに存在します。

  • Web ページ (別のサイト) が VEMap (Bing/Virtual Earth マップ オブジェクト) のインスタンスで作成されました。

現在、VEMap は次の方法でこの形式の入力フィードを受け入れることができます。

var layer = new VEShapeLayer();
var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "someurl", layer);

map.ImportShapeLayerData(veLayerSpec, onComplete, true);

onComplete は、デフォルトのピン グラフィックをカスタムのものに置き換えるために使用しているコールバック関数です。

問題は、地理情報を含むローカルxmlファイルへのパスである「someurl」に関するものです(georss単純形式)。このフィードとマップを同じドメインでホストする必要があることに気付きました。そのため、リモート フィードを読み取り、同じ形式で返す汎用ハンドラーを作成しました。

var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "/somelocalhandler.ashx", layer);

これを行うと、VEMap エラー ("z is null") が発生します。これは、リモート フィードにアクセスしようとしたときに受け取るエラーと同じです。フィードをローカルの xml ファイル (つまり、「feed.xml」) にコピーすると、エラーは発生しません。

現在の操作の順序は、リモート フィード -> ローカル ハンドラー -> VEMap インポートです。

この手順が複雑すぎる場合は、お知らせください。私は Bing Maps API に少し慣れていないため、何か見落としている可能性があります。任意の支援をいただければ幸いです。

4

1 に答える 1

0

上記の形式は、実際には必要なものに非常に近いものです。同様の解決策がMike McDougall によって発見されました。ハンドラーを介して RSS フィードを直接渡していましたが (読み取りストリームを直接書き込み)、ハンドラー内から次のように指定する必要がありました。

context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;

上記の修正により、リモートの GeoRSS フィードで、個別にホストされた Virtual Earth マップ インスタンスを正常に読み込むことができるようになりました。

于 2010-03-19T18:19:14.277 に答える