Использование Google KML для успешного рисования маршрутов / линий на веб-карте Google - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу иметь возможность рисовать маршруты на веб-карте Google. Я потратил довольно много времени на просмотр API Карт Google и написал следующий Javascript:

$(document).ready(function () {
            $(function() {
                loadScript();
            });
});

function initialize() {
    var myOptions = {
        zoom: 10,
        disableDefaultUI: true,
        center: new google.maps.LatLng(51.5001524, -0.1262362),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById('fullscreen'), myOptions);

    var ck = Math.floor(Math.random() * 1000);
    var ctaLayer = new google.maps.KmlLayer('http://xxx/storage/kml/test.kml');
    ctaLayer.setMap(map);

}

function loadScript() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize';
    document.body.appendChild(script);
}

Мой .kml файл выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Style id="blueLine">
      <LineStyle>
        <color>ffff0000</color>
        <width>4</width>
      </LineStyle>
    </Style>
    <Style id="pinkLine">
      <LineStyle>
        <color>ffff33ff</color>
        <width>4</width>
      </LineStyle>
    </Style>
    <Placemark>
      <name>LHR-BSS</name>
      <visibility>1</visibility>
      <styleUrl>#blueLine</styleUrl>
      <description><![CDATA[LHR-BSS]]></description>
      <LineString>
        <extrude>1</extrude>
        <tessellate>1</tessellate>
        <coordinates>
          -0.4534243,51.4703429,0
          4.4895353,50.9035504,0
        </coordinates>
      </LineString>
    </Placemark>
  </Document>
</kml>

Тем не менее, несмотря на это, я не могу заставить вторую линию рисовать в Картах Google. Когда я загружаю KML в Google Earth, он загружается без проблем. Что я делаю не так?

1 Ответ

0 голосов
/ 30 сентября 2011

Это было намного проще, чем я ожидал.Мне не нужен был слой KML или слой KML (который был печально известен кешированием).Я просто использовал:

var p = new google.maps.Polyline({ 
   map: m.map, 
   path: [hkg, end], 
   strokeColor: color, 
   geodesic: m.geodesic 
});

Убедившись, что при настройке карты для геодезического установлено значение true:

var maps = {
            mymap: { 
                map: null, 
                geodesic: true, 
                overlay: { path: null} }
 };

С помощью длинных широт лат, настроенных как длинные логи Google:

var hkg = new google.maps.LatLng(22.3088856, 113.9141464); /*hong kong*/

Это сработало:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...