2013-04-02 2 views
4
function createLine() 
{ 

     geocoder = new google.maps.Geocoder(); 
     var latlng = new google.maps.LatLng(7.5653, 80.4303); 
     var mapOptions = { 
      zoom: 8, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     } 
     map = new google.maps.Map(document.getElementById("directionpanel"), mapOptions); 

     var address = document.getElementById('startvalue').value; 
     var address2 = document.getElementById('endvalue').value; 

     var temp, temp2; 

     geocoder.geocode({ 'address': address }, function (results, status) { 
      temp = results[0].geometry.location; 
     }); 
     geocoder.geocode({ 'address': address2 }, function (results, status) { 
      temp2 = results[0].geometry.location; 
     }); 

     var route = [ 
      new google.maps.LatLng(temp), 
      new google.maps.LatLng(temp2) 
     ]; 


    var polyline = new google.maps.Polyline({ 
     path: route, 
     strokeColor: "#ff0000", 
     strokeOpacity: 0.6, 
     strokeWeight: 5 
    }); 

    polyline.setMap(map); 


} 

Я хочу, чтобы нарисовать прямую линию для соединения двух точек, и я не буду, чтобы вычислить, что линия distance.any путь я пытаюсь соединить точки, используя этот код, но он не work.Please помочь мне ..Как соединить две точки в карте Google ..?

+0

Что 'это не work' значит? Вы видите ошибки консоли? –

+0

2 пункт не соединился. – user2232995

ответ

4

Геокодирование является асинхронным. Попробуйте что-то вроде этого (вызовите вторую операцию геокодера из обратного вызова первого, используйте результаты как внутри обратного вызова второго).

function createLine() 
{ 

    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(7.5653, 80.4303); 
    var mapOptions = { 
     zoom: 8, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("directionpanel"), mapOptions); 

    var address = document.getElementById('startvalue').value; 
    var address2 = document.getElementById('endvalue').value; 

    var temp, temp2; 

    geocoder.geocode({ 'address': address }, function (results, status) { 
     temp = results[0].geometry.location; 
     geocoder.geocode({ 'address': address2 }, function (results, status) { 
      temp2 = results[0].geometry.location; 

     var route = [ 
      temp, 
      temp2 
     ]; 

     var polyline = new google.maps.Polyline({ 
      path: route, 
      strokeColor: "#ff0000", 
      strokeOpacity: 0.6, 
      strokeWeight: 5 
     }); 

     polyline.setMap(map); 
     }); 
    }); 
} 

working example

+0

Спасибо за ответ. Но все равно не работает ... – user2232995

+0

Работает для меня сейчас. У вас появился дополнительный «новый google.maps.LatLng» вокруг возвращаемых значений (которые уже были объектами google.maps.LatLng) – geocodezip

+0

да, я нашел рабочий пример URL: http: //www.geocodezip.com/v3_SO_drawLineFroGeocodedResults.html – Anup

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