2016-10-07 3 views
-1

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

function MapLocations() { 
 
     
 
      var i = 0; 
 
      var infoWindow = new google.maps.InfoWindow(); 
 
      \t var myLatLng = {lat: 31.553761202565646, lng: 74.26506623625755} 
 
       var m = new google.maps.Marker({ 
 
        map: map, 
 
        clickable: true, 
 
        animation: google.maps.Animation.DROP, 
 
        title: 'My Home', 
 
        position: myLatLng, 
 
        // html: h[i], 
 
        
 
       }); 
 

 
       var circle = new google.maps.Circle({ 
 
        map: map, 
 
        radius: 18.288, // 10 miles in metres 
 
        fillColor: '#50D050' 
 
       }); 
 

 
       circle.bindTo('center', m, 'position'); 
 
       
 
      \t \t var distanceInMetres = google.maps.geometry.spherical.computeDistanceBetween(myLatLng, pos).toFixed(2); 
 
      \t \t //console.log(distanceInMetres); 
 
       //google.maps.event.addListener(m, 'click', function() { 
 
       // infoWindow.setContent('Hello'); 
 
       // infoWindow.open(map, this); 
 
       //}); 
 
       //google.maps.event.addListener(dragable_marker, 'dragend', function (e) { 
 
       // alert(circle.getBounds().contains(dragable_marker.getPosition())); 
 
       //}); 
 

 
       //alert(distanceInMetres); 
 
       i++; 
 

 
      
 
     }

поз является позиция пользователя берется из объекта навигатора. Дело в том, что все работает хорошо, пока я удаляю computedistance.

+1

Вы уверены, что 'myLatLng' должен быть простой объект? Кажется, что библиотека ожидает, что ваше свойство 'lat' будет функцией, а не значением – slezica

+0

: [Google maps a.lat не является функцией.] (Http://stackoverflow.com/questions/37600543/ google-maps-a-lat-is-not-a-function) – geocodezip

+0

Связанный вопрос: [API Карт Google a.lat не является функцией ошибки] (http://stackoverflow.com/questions/36640449/google-maps- api-a-lat-is-not-a-function-error) – geocodezip

ответ

0

У вас есть синтаксовая ошибка. Есть последний яваскрипта атрибут объекта с запятой

  var m = new google.maps.Marker({ 
       map: map, 
       clickable: true, 
       animation: google.maps.Animation.DROP, 
       title: 'My Home', 
       position: myLatLng, 
           ??? this is wrong 
       // html: h[i], 

      }); 

вы должны использовать его без ,

  var m = new google.maps.Marker({ 
       map: map, 
       clickable: true, 
       animation: google.maps.Animation.DROP, 
       title: 'My Home', 
       position: myLatLng 

       // html: h[i], 

      }); 
+0

Как я сказал, проблема только в функции computeDistanceBetween –

1

Метод google.maps.geometry.spherical.computeDistancBetween не работает с LatLngLiteral объектов (по крайней мере в настоящее время), вы должны пройти в google.maps.LatLng объекты.

из the (latest) documentation:

computeDistanceBetween(from:LatLng, to:LatLng, radius?:number)

Return Value: number

Returns the distance, in meters, between two LatLngs. You can optionally specify a custom radius. The radius defaults to the radius of the Earth.

+0

большое вам спасибо. это работало как шарм –

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