-1

Я пытаюсь получить lat и lon из Json-кодированного файла для использования в качестве адресатов для интерфейса Matrix API, а не для добавления var destinationA = new google.maps .LatLng (? ????, ?????); много раз.Добавление назначения lat и lon в пункты назначения variable distancematricx API Success and Fail

Я думал, что это удалось, так как оба способа, кажется, производят одни и те же переменные назначения при просмотре, но метод два производит ошибки неперехваченным TypeError: a.lat не является функцией

Это метод, который дает один вар назначение длина 7:

var destinationA = new google.maps.LatLng(13.7373393, 100.5558883); 
var destinationB = new google.maps.LatLng(13.735132, 100.55611199999998); 
var destinationC = new google.maps.LatLng(13.736953, 100.55819300000007); 
var destinationD = new google.maps.LatLng(13.736244, 100.55694100000005); 
var destinationE = new google.maps.LatLng(13.736166, 100.557203); 
var destinationF = new google.maps.LatLng(13.738747, 100.55587700000001); 
var destinationG = new google.maps.LatLng(13.733558, 100.56020699999999); 
var destinations = [destinationA,destinationB,destinationC,destinationD,destinationE,destinationF,destinationG]; 

отлично работает, вернет расстояния для каждого из заданного центра на карте google.

Метод два: Это метод Два который дает Var месту назначения длиной 1, что я застрял на выяснить, почему его единственную длину, а не 7, как описано выше:

var location_lat_lon = <?php echo json_encode($properties_data); ?>; 
var destinations = [] 
var first = true; 

for (var i=0; i < location_lat_lon.length; i++) { 
    var sep = first ? '' : ','; 
    var lat = location_lat_lon[i].latitude; 
    var lon = location_lat_lon[i].longitude; 
    var destination1 = new google.maps.LatLng(lat, lon); 
    var destinations = [destinations+sep+destination1] ; 


    first = false; 
      } 

который возвращает точно тот же результат при просмотре адресатов переменных, но это возвращает ошибку. Некопаемое TypeError: a.lat не является функцией.

Любые советы? Невозможно передать адресаты таким образом функции calculateDistances?

Заранее спасибо :)

+1

Я предполагаю, что значения прочитаются из файла JSON, вероятно, строки. Конструктор LatLng ожидает числа с плавающей запятой. Попробуйте 'new google.maps.LatLng (parseFloat (lat), parseFloat (lon))' – duncan

+1

Также, если вы хотите добавить каждый пункт назначения в массив 'destination', используйте' destination.push (destination1); ' – duncan

ответ

0

Попробуйте это:

var location_lat_lon = <?php echo json_encode($properties_data); ?>; 
var destinations = [] 

for (var i=0; i < location_lat_lon.length; i++) { 
    var lat = location_lat_lon[i].latitude; 
    var lon = location_lat_lon[i].longitude; 
    var destination1 = new google.maps.LatLng(parseFloat(lat), parseFloat(lon)); 
    destinations.push(destination1); 
} 
+0

OMG .. Удивительный, kop khun ka Duncan ,, Работает отлично сейчас .. Большое спасибо. – Malisa

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