计算距离

时间:2016-10-07 17:07:12

标签: javascript google-maps

我只是想计算两点之间的距离,但它给了我Uncaught TypeError:a.lat不是一个函数。

 function MapLocations() {
        
            var i = 0;
            var infoWindow = new google.maps.InfoWindow();
            	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');
                
           		var distanceInMetres = google.maps.geometry.spherical.computeDistanceBetween(myLatLng, pos).toFixed(2);
           		//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++;

            
        }

pos是从导航器对象获取的用户位置。事情是,当我删除计算机阻力时,它的工作正常。

2 个答案:

答案 0 :(得分:1)

google.maps.geometry.spherical.computeDistancBetween方法不适用于LatLngLiteral个对象(至少目前为止),您必须传入google.maps.LatLng个对象。

来自the (latest) documentation

  

computeDistanceBetween (从: LatLng ,到: LatLng ,半径?:数字)

     

返回值:数字

     

返回两个LatLng之间的距离(以米为单位)。您可以选择指定自定义半径。半径默认为地球的半径。

答案 1 :(得分:0)

你有一个sintax错误。使用逗号

创建最后一个javascript对象属性
           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],

            });