2012-04-27 2 views
0

Я пытаюсь нарисовать несколько геодезических полилиний с API JavaScript Карт Google из нескольких пар точек. Я нашел 98% того, что я ищу здесь (http://stackoverflow.com/questions/2994424/google-maps-geocoding-address-to-glatlng), но я просто не могу понять, как добавить дополнительные баллы и дополнительные линии (например, также показывают линию между Чикаго, США и Лос-Анджелесом, США). Спасибо за любую помощь, которую любой может предоставить.Геокодирование Google Maps Несколько строк

ответ

3

Новое обновление, это ставит кодировку точки назначения в отдельную функцию и делает каждый вызов геокодирования независимо. Должно быть гораздо более масштабируемым, чем пытаться вложить процедуры обратного вызова.

<!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: 1280px; height: 1024px;"></div> 

    <script type="text/javascript"> 
//add locations 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 2, 
     center: new google.maps.LatLng(35.00, -25.00), 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
    }); 

    var address1 = '60033'; 

    var gc = new google.maps.Geocoder(); 
    gc.geocode({'address': address1}, function (res1, status) { 

     var hub = res1[0].geometry.location; 
     new google.maps.Marker({ 
      position: res1[0].geometry.location, 
      map: map 
      }); 

     geocodeLine(hub, '44145'); 
     geocodeLine(hub, '03103'); 
     geocodeLine(hub, '30236'); 
     geocodeLine(hub, '18106'); 
     geocodeLine(hub, '64147'); 
     geocodeLine(hub, '86401'); 
     geocodeLine(hub, '75110'); 
     geocodeLine(hub, '56001'); 
     geocodeLine(hub, '80239'); 
     geocodeLine(hub, '95776'); 
    }); 

    function geocodeLine(hub, address) 
    { 
     var gc = new google.maps.Geocoder(); 

     gc.geocode({'address': address}, function (res, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 

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

       new google.maps.Polyline({ 
       path: [ 
        hub, 
        res[0].geometry.location 
       ], 
       strokeColor: '#FF0000', 
       geodesic: true, 
       map: map 
       }); 
      } 
     }); 
    } 
    </script> 
</body> 
</html> 
+0

Спасибо ОЧЕНЬ за ответ. Единственная проблема с приведенным вами примером состоит в том, что он выполняет все адреса линейно. Есть ли способ, чтобы каждый из них был уникальным? Например, одна линия от Лондона до Нью-Йорка и другая от Чикаго до Лос-Анджелеса. Код генерирует Лондон в Нью-Йорк в Чикаго в Лос-Анджелес. Что, если я не хочу, чтобы Нью-Йорк в Чикаго? Опять же, спасибо ТОН! –

+0

Вам понадобится создать несколько полилиний в этом случае, так как полилиния представляет непрерывную линию, чтобы иметь две строки, вам нужно создать две полилинии. Я привел пример, показывающий, что я имею в виду в ответе выше. – javram

+0

Ты мужчина! Еще раз спасибо всем за помощь. Еще один быстрый вопрос для вас. Я закодировал это для своих нужд, но я, кажется, натыкаюсь на стену, когда добавляю слишком много очков. Если вы посмотрите на http://www.maptest.freehosting.com/chi.html, я сделал карту, которую я пытался сделать, за исключением того, что мне нужно добавить еще одну точку. Но когда я пытаюсь добавить 12-й пункт, это не сработает. Любая идея, что может быть причиной этого? Это вещь Google, сценарий или ошибка пользователя (я)? Благодарю. –

Смежные вопросы