2013-10-07 4 views
0

я нарисовал один полилинии в Google-карте, но когда попытался нарисовать две линии в одной карте это не удалось ... его не показывает ничего на Google-картерисунок несколько строк в Google-карте

может кто-нибудь пожалуйста, скажите мне решение этой

SEE - http://jsfiddle.net/wLeBh/12/

Мой браузер, как указано ниже

function initMap() 
{ 
    alert("entered!!!"); 
var routes = [{origin:'p t usha road, kozhikode', 
       destination:'cooperative hospital, eranjipalam, kozhikode' 
       }, 
       {origin:'IIM, Kozhikode', 
       destination:'VELLIMADUKUNNU, KOZHIKODE' 
       } 
      ];  
    try{   
    var rendererOptions = { 
    preserveViewport: true,   
    suppressMarkers:true, 
    routeIndex:1 
    }; 

    var directionsService = new google.maps.DirectionsService(); 
    var directionsDisplay = new google.maps.DirectionsRenderer(); 

//routes.each(function(route){ 


for (var i = 0, l = routes.length; i < l; i++) { 
     var obj = routes[i]; 
alert(obj.origin); 
    var request = { 
     origin: obj.origin, 
     destination: obj.destination, 
     travelMode: google.maps.TravelMode.DRIVING 
    }; 


map = new google.maps.Map(document.getElementById("map"), { 
center: new google.maps.LatLng(0,0), 
zoom: 10, 
maxZoom:16, 
mapTypeId: google.maps.MapTypeId.ROADMAP, 
mapTypeControlOptions: 
{ 
    style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
}, 
navigationControl: true, 
navigationControlOptions: 
{ 
style: google.maps.NavigationControlStyle.SMALL 
} 
}); 


    var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions); 
    directionsDisplay.setMap(map); 

    directionsService.route(request, function(result, status) { 
    console.log(result); 

     if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(result); 
     } 
    }); 


} 

}catch(e){alert(e);} 
} 
+0

Сервис направления является асинхронным, вы перезаписать первый экземпляр до ее завершения. Он также зависит от ограничений по скорости и квоты, поэтому, если вы собираетесь сделать несколько «строк», вы столкнетесь с проблемами. – geocodezip

ответ

0

Есть некоторые вопросы, не связанные с вопросом:

  1. вы создаете новую карту-экземпляр на каждой итерации
  2. вы не установили карту-свойство видеообработки
  3. вы установили routeIndex до 1, но вы получаете только 1 маршрут (с индексом 0)

Вопрос, связанный с вопросом: попытка была хорошей, но реализации не было.
Вы должны создать новый экземпляр DirectionsRenderer для каждого запроса (вы его сделали), но этот экземпляр виден в области функций, поэтому переменная будет перезаписана на каждой итерации, и когда ответ будет получен, каждый ответ будет использоваться один и тот же экземпляр DirectionsRenderer (который может отображать только один маршрут).

Используйте анонимную функцию для создания DirectionsRenderer-экземпляров и запросы:

$.each(routes, 
function(i,obj){//<--anonymous function 

var request = { 
     origin: obj.origin, 
     destination: obj.destination, 
     travelMode: google.maps.TravelMode.DRIVING 
     }, 
    //directionsDisplay is only visible in the scope of this anonymous function  
    directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions); 


    directionsService.route(request, function(result, status) { 

     if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(result); 
     } 
    }); 

});}); 

Fiddle: http://jsfiddle.net/doktormolle/wLeBh/14/

+0

сэр это работает круто ...... сэр, как мы можем поместить указатель в начало и место назначения с его именем места ... –

+0

начало/конец маршрута можно получить через 'result.route [0 ] .legs [0] .start_address', 'result.route [0] .legs [0] .start_location',' result.route [0] .legs [0] .end_address', 'result.route [0]. legs [0] .end_location', в котором '_location' является' LatLng' и '_address' является« place-name ». Создайте маркеры из LatLngs. –

+0

Чтобы нарисовать имя места, вы можете использовать [пользовательский оверлей] (https://developers.google.com/maps/documentation/javascript/customoverlays), [MarkerWithLabels] (http: // google-maps-utility- library-v3.googlecode.com/svn-history/r150/trunk/markerwithlabel/docs/reference.html) (это реализация пользовательских наложений) или [динамическая иконка] (https://developers.google.com/chart/image/docs/gallery/dynamic_icons? hl = de & csw = 1 # encoding) (Примечание: динамические значки API графического графика устарели) –

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