2015-04-23 35 views
1

我有一個應用程序與虛擬地球V6.3控制,使用純JavaScript添加折線,如下面的示例代碼片段中所示嵌入單個HTML5網頁:在虛擬地球V6.3(必應)地圖控件中的高縮放級別的折線問題

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>VE Map with Polyline</title> 
    <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3"></script> 
    <script type="text/javascript"> 
     function MapLoad() { 
      // load map 
      var _map = new VEMap('Map'); 
      _map.LoadMap(); 

      // center point in NY City 
      var _center = new VELatLong(40.75, -73.99); 

      // zoom level 
      _map.SetCenterAndZoom(_center, 14); 

      // set Map style 
      _map.SetMapStyle(VEMapStyle.Shaded); 

      // polyline layer 
      var _layerPolyline = new VEShapeLayer(); 

      // sample polyline array of coordinates 
      var _arrPoints = []; 
      _arrPoints.push(new VELatLong(40.78, -73.984)); 
      _arrPoints.push(new VELatLong(40.76, -73.989)); 
      _arrPoints.push(new VELatLong(40.75, -73.99)); 
      _arrPoints.push(new VELatLong(40.74, -73.991)); 
      _arrPoints.push(new VELatLong(40.73, -73.992)); 
      _arrPoints.push(new VELatLong(40.72, -73.993)); 
      _arrPoints.push(new VELatLong(40.72, -73.994)); 
      _arrPoints.push(new VELatLong(40.73, -73.995)); 
      _arrPoints.push(new VELatLong(40.73, -73.996)); 
      _arrPoints.push(new VELatLong(40.74, -73.997)); 

      // polyline object properties 
      var _polyLine= new VEShape(VEShapeType.Polyline, _arrPoints); 
      _polyLine.HideIcon(); 
      _polyLine.SetLineColor(new VEColor(0, 0, 255, 1)); 
      _polyLine.SetFillColor(new VEColor(0, 0, 255, 0)); 
      _polyLine.SetLineWidth(4); 

      // add polyline to layer 
      _layerPolyline.AddShape(_polyLine); 

      // add layer to map 
      _map.AddShapeLayer(_layerPolyline); 
     } 
    </script> 
</head> 
<body onload="MapLoad();"> 
    <div id="Map" style="position:absolute; height:98%; width:98%;"></div> 
</body> 
</html> 

它在任何縮放級別都能正常工作。但是,使用ASP.NET 4.5 Web窗體時,實際上相同的代碼會在實際應用程序中產生奇怪的結果,即:折線在高縮放級別(大約在15以上)消失。

問:有關問題的根本原因以及如何解決它的任何想法?謝謝。

UPDATE問題通過升級到Bing地圖AJAX控件,版本7.0(:DEMO:巴士路線折線可見在任何縮放級別的工作)解決。對Ricky Brundritt的榮譽(@rbrundritt)。

回答

1

可能的問題與丟失的UTF-9元標籤或文檔類型有關。 V6.3是真的老了,需要下面的元標記和文檔類型中指定:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

另一個可能的問題是載入地圖時您所指定的任何憑據。這違反了Bing地圖的使用期限。

_map = new VEMap('MapNYC'); 
_map.SetCredentials("YOUR_BING_MAPS_KEY"); 
_map.LoadMap(); 

你可以找到關於如何創建一個Bing地圖帳戶,這裏的關鍵文檔:

https://msdn.microsoft.com/en-us/library/gg650598.aspx

https://msdn.microsoft.com/en-us/library/ff428642.aspx

我建議爲「公共網站」「基本」鍵。這將允許您每年有125,000宗免費交易。

所有這一切,你不應該使用v6.3。它在5年前被V7取代,即將臨近即將結束。一年前,v6.3的文檔已脫機使用,作爲該版本終結的一部分。

+0

非常感謝您的回答(接受)和相當有見地的評論。看起來VE 6.3並不適合任何具有前瞻性的應用開發者,但我很驚訝它需要Web應用的密鑰/證書(據我所知,以前的版本並不要求這樣做)。我有一個Desktop Win的應用程序的密鑰,我使用它的WPF開發,但不是爲Web應用程序。更令人困惑的是:如果我以純文本的形式將此密鑰放入我的javascript中(如您的示例所示),那麼它將在整個世界中可見。你能否就這個問題發表評論?感謝和問候,Alex Bell –

+1

Bing Maps在第5版中引入了一種身份驗證方法。此身份驗證方法已從ID /密碼方法更改爲v6版本的密鑰方法。地圖控件在沒有驗證的情況下工作,但違反了使用條款。通過不使用密鑰他們是一個法律風險。另一個風險是,由於您沒有驗證地圖,Bing地圖團隊不知道您使用的是v6.3,所以您還沒有收到任何有關它即將結束的通知。任何人都可以創建一個密鑰,並且以純文本形式顯示它很好。請注意,即使在WPF中,也很容易提取密鑰。 – rbrundritt

+0

謝謝@rbrundritt,我明白你的意思了。實際上,我的所有3個密鑰都用於我的Bing應用,包括您提到的那個,所以我會將其用於我的網絡應用。除了這個關鍵/憑證問題之外,看起來V6.3確實很老,有點缺陷,所以我考慮升級到V7或者切換到Google Map。無論如何,感謝您的時間和善意的關注。我最好的,亞歷克斯B. –

相關問題