我将如何计算点之间的距离谷歌地图Api V3
How Would I Calculate The Distance Between The Points Google Maps Api V3
我正在做一个项目,它几乎已经完成了。问题是,我对Javascript还很陌生,不知道如何做一些可能很简单的事情。这是我的部分代码:
var dista;
var p;
var addrbounds;
var addrlat;
var addrlng;
var addr;
var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/red.png",
new google.maps.Size(32, 32), new google.maps.Point(0, 0),
new google.maps.Point(16, 32));
var center = null;
var map = null;
var currentPopup;
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, info) {
var address = document.myform.customer.value;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var addrbounds = results[0].geometry.location; //get geocoded results into variable
var addrlat = results[0].geometry.location.lat();
var addrlng = results[0].geometry.location.lng();
var p = new google.maps.LatLng(addrlat, addrlng);
var pt1 = new google.maps.LatLng(lat, lng);
dista = pt1.distanceFrom(p); //calculate distance between the points
var di = (dista/1000);
document.myform1.memory.value = di; //add dist to memory text box
return;
} else {
alert(address + ' not found');
}
});
// desired spot for if statement regarding distance
var pt = new google.maps.LatLng(lat, lng);
bounds.extend(pt);
var marker = new google.maps.Marker({
position: pt,
icon: icon,
map: map
});
var popup = new google.maps.InfoWindow({
content: info,
maxWidth: 300
});
google.maps.event.addListener(marker, "click", function() {
if (currentPopup != null) {
currentPopup.close();
currentPopup = null;
}
popup.open(map, marker);
currentPopup = popup;
});
google.maps.event.addListener(popup, "closeclick", function() {
map.panTo(center);
currentPopup = null;
});
}
基本上,它的作用是在addMarker()函数中发生的第一件事是对地址进行地理编码,然后计算与地址的距离。这很好用。当想要获得地理编码器的距离以创建if语句时,问题就来了,如果数据库在某个半径内,则只添加数据库中的标记。正如你所看到的,我试着把它移到一个文本框里。这似乎有效,但它是循环的一部分,不会随着循环的每次运行而更新。
我已经被困了几天了,如果有任何帮助,我们将不胜感激。我讨厌如此接近终点却被卡住!
编辑:
我开始工作了。我就是这样做的:
var dista;
var p;
var addrbounds;
var addrlat;
var addrlng;
var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/red.png",
new google.maps.Size(32, 32), new google.maps.Point(0, 0),
new google.maps.Point(16, 32));
var center = null;
var map = null;
var currentPopup;
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, info) {
var address = document.myform.customer.value;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var addrbounds = results[0].geometry.location;
var addrlat = results[0].geometry.location.lat();
var addrlng = results[0].geometry.location.lng();
var p = new google.maps.LatLng(addrlat, addrlng);
var pt1 = new google.maps.LatLng(lat, lng);
dista = pt1.distanceFrom(p);
var di = (dista/1000);
document.myform1.memory.value = di;
document.myform1.memory1.value = addrlat;
document.myform1.memory2.value = addrlng;
return;
} else {
alert(address + ' not found');
}
});
var tstlat = document.myform1.memory1.value;
var tstlng = document.myform1.memory2.value;
var tstpt = new google.maps.LatLng(tstlat, tstlng);
var pt = new google.maps.LatLng(lat, lng);
var distan = pt.distanceFrom(tstpt);
var tstdistance = (distan/1000);
if (tstdistance < 20){
// alert (tstdistance);
bounds.extend(pt);
var marker = new google.maps.Marker({
position: pt,
icon: icon,
map: map
});
var popup = new google.maps.InfoWindow({
content: info,
maxWidth: 300
});
google.maps.event.addListener(marker, "click", function() {
if (currentPopup != null) {
currentPopup.close();
currentPopup = null;
}
popup.open(map, marker);
currentPopup = popup;
});
google.maps.event.addListener(popup, "closeclick", function() {
map.panTo(center);
currentPopup = null;
});
}
else
{
return;
}}
现在我只需要修复一个地图刷新问题,然后项目就完成了!
您不能从地理编码回调中获取任何东西,地理编码强制执行异步请求,您永远不会从回调之外知道响应何时到达。
您必须从回调中向外部推送内容,而不是获取外部内容(正如您已经通过设置文本框的值所做的那样)。您也可以从回调中调用另一个函数,并将距离作为参数提供。
相关文章:
- 铯JS-两点之间的距离
- cloudSearch:范围从0到某个值之间的距离
- 查找图像上两点之间的距离,即使缩放图像也是如此
- 如何使用谷歌地图几何库查找两点之间的距离
- HTML5 画布绘制点之间的线条距离
- javascript中两个位置之间的距离
- 如何使用JavaScript设置内容和页脚之间的距离
- 使用javascript计算两个邮政编码之间的距离
- 只需显示两点之间的距离(KM)
- 计算标记之间的距离
- d3.js中条形图之间的相关距离
- 在强制布局 D3.js 中保持节点之间的动态链接距离
- 如何计算两个纬度和经度之间的距离
- X 轴标签与高图表中的图表之间的距离
- DOM 中两个元素之间的距离(以 px 为单位)
- 删除云中点之间的间隙 - 随着距离的靠近,使它们变大
- 搜索的地址与谷歌地图 api v3 上最近的现有地标之间的距离
- D3 力布局:如何保持节点之间的给定最小距离
- 坐标之间的音差地理位置距离
- 计算两个邮编之间距离的最佳方法(英国)