Проблема с полилиниями при высоком уровне масштабирования в элементе управления картой Virtual Earth V6.3 (Bing)
У меня есть приложение с управлением Virtual Earth V6.3, использующее чистый JavaScript для добавления ломаной линии, как показано в следующем примере фрагмента кода, встроенного в одну веб-страницу HTML5:
<!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, а именно: полилиния исчезает при высоком уровне масштабирования (около 15).
Q: Есть идеи относительно первопричины проблемы и как ее исправить? Спасибо.
ОБНОВЛЕНИЕ: проблема устранена путем обновления до Bing Maps AJAX Control версии 7.0 (работает: ДЕМО: полилиния маршрута автобуса видна при любом уровне масштабирования). Слава Рикки Брандритту (@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 Maps.
_map = new VEMap('MapNYC');
_map.SetCredentials("YOUR_BING_MAPS_KEY");
_map.LoadMap();
Вы можете найти документацию о том, как создать учетную запись Bing Maps, и ввести ключ здесь:
https://msdn.microsoft.com/en-us/library/gg650598.aspx
https://msdn.microsoft.com/en-us/library/ff428642.aspx
Я рекомендую создать "базовый" ключ для "Публичных сайтов". Это позволит вам 125 000 бесплатных транзакций в год.
Все, что сказал, вы не должны использовать v6.3. Он был заменен V7 более 5 лет назад и скоро будет близок к концу. Документация для v6.3 была переведена в автономный режим более года назад как часть срока действия этой версии.