2010-03-19 38 views
0

場景如下:VEMap和GeoRSS訂閱(單獨託管)

  • 一個WCF Web服務存在輸出有效GeoRSS訂閱。由於許多不同的應用程序都可以訪問它,因此它存在於自己的域中。

  • 使用VEMap(必應/虛擬地球地圖對象)的實例創建了一個網頁(在不同的網站上)。

現在,VEMap可以通過以下接受這種格式的輸入飼料:

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

map.ImportShapeLayerData(veLayerSpec, onComplete, true); 

的onComplete是我使用替換默認引腳圖形的東西自定義的回調函數。

問題是關於「someurl」,它是包含地理信息(georss簡單格式)的本地xml文件的路徑。我意識到這個提要和地圖必須託管在同一個域中,所以我創建了一個通用處理程序來讀取遠程提要並以相同的格式返回它。

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

當我這樣做,我得到VEMap錯誤(「z爲空」)。這與嘗試訪問遠程供稿時會收到同樣的錯誤。當我將feed複製到本地xml文件(即「feed.xml」)時,沒有錯誤。

操作的順序是目前:遠程飼料 - >本地處理程序 - > VEMap進口

如果我在這個複雜的程序,讓我知道!我對Bing Maps API有點新意,可能錯過了一些東西。任何援助表示讚賞。

回答

0

我上面的格式實際上非常接近我所需要的。類似的解決方案被發現by Mike McDougall.雖然我直接傳遞的RSS饋送通過該處理程序(直接寫入所讀取的流),我只需要指定從處理程序中執行以下操作:

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

通過上述修正,我能夠通過遠程GeoRSS源成功加載單獨託管的虛擬地球地圖實例。