2014-11-07 2 views
1

В моем javascript-коде каждые шесть секунд я получаю переменную 'polys' из XML с неопределенным числом пар координат, так как это (я пропустил некоторые переменные): echo.phpGoogle Map Полилиновые массивы из XML

<markers> 
<marker iph="ce987" polys="[40.66645296,-0.22793904],[39.66973274,0.21806265]"/> 
</markers> 

код Javascript:

 function processXML(data) { 
     var xml = data.responseXML; 
     var markers = xml.documentElement.getElementsByTagName("marker"); 
     //clear markers before you start drawing new ones 
     resetMarkers(markersArray) 
     for (var i = 0; i < markers.length; i++) { 
      var idp = markers[i].getAttribute("idp"); 
      var polys = markers[i].getAttribute("polys"); 

      var genpolys = []; 

      var flightPath = new google.maps.Polyline({ 
       path: genpolys, 
       geodesic: true, 
       strokeColor: '#FF0000', 
       strokeOpacity: 1.0, 
       strokeWeight: 2, 
       map: map 
      }); 

      markersArray.push(marker); 
     } 
     setTimeout(function() { 
      downloadUrl("echo.php", processXML); 
     }, 19000); 
    } 

И, мне нужно генерировать массив ¿? с coordenates, как это:

var genpolys = [ 
    new google.maps.LatLng(40.66645296,-0.22793904), 
    new google.maps.LatLng(39.66973274,0.21806265) 
    ]; 

Мой уровень JavaScript слишком низко, так что я не знаю, генерировать эту переменную автоматически неограниченное число пар coordinates.Then использовать в «пути» внутри «полилинии»

Может ли кто-нибудь помочь мне здесь? Мы ценим любые предложения! Спасибо!

ответ

3

Попробуйте что-нибудь подобное. (Я знаю, что это не совсем правильно, но может дать вам идею. Я попытаюсь изменить позже.)

function processXML(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 

    //clear markers before you start drawing new ones 
    resetMarkers(markersArray); 

    for (var i = 0; i < markers.length; i++) { 
     var idp = markers[i].getAttribute("idp"); 
     var polys = markers[i].getAttribute("polys"); 

     var genpolys = []; 
     var json = JSON.parse('{"polys":['+polys+']}'); 
     for(var coord in json.polys){ 
      genpolys[coord] = new google.maps.LatLng(json.polys[coord][0],json.polys[coord][1]);  
     } 

     var flightPath = new google.maps.Polyline({ 
     path: genpolys, 
     geodesic: true, 
     strokeColor: '#FF0000', 
     strokeOpacity: 1.0, 
     strokeWeight: 2, 
     map: map 
     }); 

     markersArray.push(marker); 
    } 

    setTimeout(function() { 
     downloadUrl("echo.php", processXML); 
    }, 19000); 
} 

Я надеюсь, что это поможет вам понять это. Я адаптировал ответ с этой страницы: how to draw polylines on google maps dynamically

+0

Спасибо @JordanPowell за ваш быстрый ответ !!, все еще не работает. Я поставил предупреждение (точка); и предупреждения (геополисы); и я получаю «NaN» –

+0

В написанном мной коде есть ошибка, которая предотвратит создание объектов LatLng. Я постараюсь сделать это лучше, когда я буду доступен. В то же время, посмотрите, можете ли вы найти что-нибудь с этим: http://jsfiddle.net/4a87k/263/ @VictorCormano –

+0

@VictorCormano См. Мое редактирование. –

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