我有一個應用程序與虛擬地球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)。
非常感謝您的回答(接受)和相當有見地的評論。看起來VE 6.3並不適合任何具有前瞻性的應用開發者,但我很驚訝它需要Web應用的密鑰/證書(據我所知,以前的版本並不要求這樣做)。我有一個Desktop Win的應用程序的密鑰,我使用它的WPF開發,但不是爲Web應用程序。更令人困惑的是:如果我以純文本的形式將此密鑰放入我的javascript中(如您的示例所示),那麼它將在整個世界中可見。你能否就這個問題發表評論?感謝和問候,Alex Bell –
Bing Maps在第5版中引入了一種身份驗證方法。此身份驗證方法已從ID /密碼方法更改爲v6版本的密鑰方法。地圖控件在沒有驗證的情況下工作,但違反了使用條款。通過不使用密鑰他們是一個法律風險。另一個風險是,由於您沒有驗證地圖,Bing地圖團隊不知道您使用的是v6.3,所以您還沒有收到任何有關它即將結束的通知。任何人都可以創建一個密鑰,並且以純文本形式顯示它很好。請注意,即使在WPF中,也很容易提取密鑰。 – rbrundritt
謝謝@rbrundritt,我明白你的意思了。實際上,我的所有3個密鑰都用於我的Bing應用,包括您提到的那個,所以我會將其用於我的網絡應用。除了這個關鍵/憑證問題之外,看起來V6.3確實很老,有點缺陷,所以我考慮升級到V7或者切換到Google Map。無論如何,感謝您的時間和善意的關注。我最好的,亞歷克斯B. –