Геокодирование Google Maps (адрес GLatLng)

Я пытаюсь нарисовать геодезическую полилинию с помощью Google Maps JavaScript API из двух точек address.

var polyOptions = {geodesic:true};
var polyline = new GPolyline([
    new GLatLng(),
    new GLatLng()
  ], "#f36c25", 5, 0.8, polyOptions
);

map.addOverlay(polyline);

if (GBrowserIsCompatible()) {
  map.addOverlay(polyline);
}

Может ли кто-нибудь сказать мне, как я могу динамически геокодировать адрес в координаты GLatLng? Я немного запутался после прочтения документации API Google. .


person b0nd    schedule 08.06.2010    source источник


Ответы (1)


Вы можете проверить следующий пример. Сначала он пытается геокодировать address1. В случае успеха он пытается геокодировать address2. Если оба успешны, он строит геодезическую полилинию между двумя координатами и двумя маркерами:

<!DOCTYPE html>
<html> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
  <title>Google Maps API Geocoding Demo</title> 
  <script src="http://maps.google.com/maps/api/js?sensor=false" 
          type="text/javascript"></script>
</head> 
<body>
  <div id="map" style="width: 500px; height: 400px;"></div>

  <script type="text/javascript">
    var address1 = 'London, UK';
    var address2 = 'New York, US';

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 2,
      center: new google.maps.LatLng(35.00, -25.00),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var gc = new google.maps.Geocoder();

    gc.geocode({'address': address1}, function (res1, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        gc.geocode({'address': address2}, function (res2, status) {
          if (status == google.maps.GeocoderStatus.OK) {
            new google.maps.Marker({
              position: res1[0].geometry.location,
              map: map
            });

            new google.maps.Marker({
              position: res2[0].geometry.location,
              map: map
            });

            new google.maps.Polyline({
              path: [
                res1[0].geometry.location,
                res2[0].geometry.location
              ],
              strokeColor: '#FF0000',
              geodesic: true,
              map: map
            });
          }
        });
      }            
    });

  </script>
</body>
</html>

Снимок экрана:

Демонстрация геокодирования Google Maps API

person Daniel Vassallo    schedule 08.06.2010
comment
Если у вас на карте миллиард точек, как у меня. это выглядит довольно круто : var color = '#'+(Math.random()*0xFFFFFF<<0).toString(16); new google.maps.Polyline({ path: [ initialLocation, current_point ], strokeColor: color, geodesic: true, map: map }); - person John Riselvato; 25.10.2012