Bing v6 kml import с высоты птичьего полета

Я пытаюсь реализовать карты Bing в режиме просмотра с высоты птичьего полета с помощью специального файла KML. Я использую Bing v6, потому что в него встроена функция импорта KML, но у меня с ней возникают проблемы.

Вот пример моей реальной реализации: http://alturl.com/w78mw [ссылка не работает]

Карта загружает KML, но не переключается в режим просмотра с высоты птичьего полета, как предполагалось.

Если я переключаюсь вручную, я не могу уменьшить масштаб по какой-то причине, связано ли это с какой-либо ошибкой?


person Luis    schedule 28.02.2013    source источник


Ответы (1)


Справочник по API:

Вы можете использовать полный прототип метода ImportShapeLayerData, чтобы использовать обратный вызов и установить стиль после загрузки элемента, см. MSDN: http://msdn.microsoft.com/en-us/library/bb429606.aspx

Вы можете использовать свойство SetBestMapView (последний параметр метода), чтобы установить представление автоматически или сделать это самостоятельно.

Пример:

А вот пример из вашего кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>Bing Maps KML</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?
v=6.3"></script>

    <script type="text/javascript">
        var map = null;

        function GetMap() {
            map = new VEMap('myMap');
            map.SetCredentials("YOURKEY");

            map.LoadMap();
            map.SetMapMode(VEMapMode.Mode2D);

            map.SetZoomLevel(1);

            func_addGrid();

        }

        function func_addGrid() {
            var atlasGrid = new VEShapeLayer();
            var atlasShape = new VEShapeSourceSpecification(VEDataType.ImportXML,
                     "http://www.mediacode.pt/directions.kml", atlasGrid);
            map.ImportShapeLayerData(atlasShape, function () {
                map.SetMapStyle(VEMapStyle.Birdseye);
            }, true);
        }

    </script>
</head>
<body onload="GetMap();">
    <div id='myMap' style="position: relative; width: 600px; height: 400px;"></div>
</body>
</html>
person Nicolas Boonaert    schedule 28.02.2013
comment
Спасибо, это исправило. У меня просто проблемы с настройкой увеличения с высоты птичьего полета. Я установил метод map.SetBirdseyeScene, но он не дает желаемых результатов ... - person Luis; 28.02.2013
comment
Я пытался управлять зумом с высоты птичьего полета, но он не работает ... может кто-нибудь мне в этом помочь? Пример URL: alturl.com/qximg Спасибо. - person Luis; 07.03.2013
comment
С высоты птичьего полета у вас есть два уровня масштабирования. На основе вашего кода вы можете управлять картой с помощью соответствующего метода SetBirdseyeScene: msdn.microsoft.com/en-us/library/bb877851.aspx. Объясните, что вы пытаетесь сделать, и я обновлю ответ. - person Nicolas Boonaert; 07.03.2013
comment
Я хочу, чтобы он был уменьшен, чтобы можно было видеть маршрут, который я определил в пользовательском файле KML, который я загружаю. В примере слишком близок зум ... - person Luis; 07.03.2013
comment
Как объяснялось, вид с высоты птичьего полета доступен только при двух ближайших уровнях масштабирования в версии 6.3, поэтому вы слишком близки. В v7 все по-другому, но аэрофотоснимки с высоты птичьего полета по-прежнему доступны только для самого близкого увеличения, улучшенный вид с высоты птичьего полета доступен для более высокого увеличения. - person Nicolas Boonaert; 07.03.2013
comment
Спасибо, Николас. Как насчет версии 7, у меня больше гибкости / возможностей? Есть ли примеры кода, которые позволяют мне использовать файлы kml в версии 7? Мерси! - person Luis; 25.03.2013
comment
В настоящее время модуля KML нет, вы можете почерпнуть вдохновение и написать свой собственный, используя модуль GeoRSS из CodePlex: bingmapsv7modules. codeplex.com - person Nicolas Boonaert; 26.03.2013