2014-10-16 3 views
0

Это мой сценарий:Не удается прочитать свойство

  if(entfernung2<=1 && drive=="AUT"){ 
       dauer = new google.maps.DistanceMatrixService(); 
       dauer.getDistanceMatrix({ 
       origins: ["48.142362,11.549859"], 
       destinations: ["48.2,11.4"], 
       travelMode: google.maps.TravelMode.WALKING, 
       unitSystem: google.maps.UnitSystem.METRIC, 
       }) 
      dauer1=dauer.rows.elements.duration.text; 
      }; 

, если я войти dauer1 следующие ошибки показаны:

Uncaught TypeError: Не удается прочитать «элементы» свойство неопределенного неперехваченным TypeError: Не удается прочитать свойство " apply 'of undefined

Что не так? :/

EDIT:

  if(entfernung2<=1 && drive=="AUT"){ 
       dauer = new google.maps.DistanceMatrixService(); 
      dauer.getDistanceMatrix(
      { 
       origins: ["48.142362,11.549859"], 
       destinations: ['"'+data.position.latitude+','+data.position.longitude+'"'], 
       travelMode: google.maps.TravelMode.WALKING, 
       unitSystem: google.maps.UnitSystem.METRIC 
      }, setDauer1); 

      function setDauer1(response, status) { 
       dauer1 = response.rows[0].elements[0].duration.value; 
       console.log(dauer1); 
      }}; 
+0

'dauer.rows' представляет собой массив, который не имеет' elements' свойство. Но объекты массива (например, 'dauer.rows [0] .elements.duration.text') – blex

+0

Теперь я получаю сообщение об ошибке Uncaught TypeError: Не удается прочитать свойство '0' undefined –

+0

Json выглядит так: { " destination_addresses ": [ "Сан-Франциско, Калифорни, États-Юнис"], "origin_addresses": [ "Ванкувер, Британская Колумбия, Канада"], "строки": [ { "элементы": [ { " расстояние ": { "текст": "1 709 км", "значение": 1709199 }, "длительность": { "текст": "3 Jours 19 Heures", "значение": 327594 }, "Статус": "OK" } ] } ], "Статус": "OK" } –

ответ

0

getDistanceMatrix является асинхронным, так dauer1 определяется до dauer обновляется. Глядя на docs, вам нужен обратный вызов:

dauer.getDistanceMatrix(
{ 
    origins: ["48.142362,11.549859"], 
    destinations: ["48.2,11.4"], 
    travelMode: google.maps.TravelMode.WALKING, 
    unitSystem: google.maps.UnitSystem.METRIC 
}, setDauer1); 

function setDauer1(response, status) { 
    dauer1 = response.rows[0].elements[0].duration.text; 
    // your code continues here 
} 
+0

Спасибо :) ... Теперь я получаю ошибку неперехваченным TypeError: Не удается прочитать свойство " rows 'of undefined и иногда Uncaught TypeError: Не удается прочитать свойство' 0 'из null –

+0

if (entfernung2 <= 1 && drive == "AUT") { dauer = new google.maps.DistanceMatrixService(); dauer.getDistanceMatrix ( { происхождение: [ "48.142362,11.549859"], направления: [ "48.2,11.4"], travelMode: google.maps.TravelMode.WALKING, unitSystem: google.maps.UnitSystem.METRIC }, setDauer1); функция setDauer1 (ответ, состояние) { dauer1 = response [0] .rows.elements.duration.text; }}; –

+0

@SebastianLzlem Я только что обновил эту строку. 'elements' также является массивом, поэтому, если вы хотите использовать первый элемент, добавьте' [0] '. Обратите внимание, что этот фрагмент кода не проверяет, есть ли на самом деле результат. – blex

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