我正在使用Google Maps API v3和javascript将地图添加到网站中。
我有一个地址列表,并已在地图上成功绘制了它们。当用户输入邮政编码时,地图将重新定位在他们的位置,显示最接近该点的标记。现在,我需要创建一个最接近其邮政编码的3或5个位置的列表视图,并带有用于行驶方向的链接。我被困住了…并且愿意提出建议。
通常的解决方案是使用google.maps.geometry.spherical库computeDistanceBetween(from:LatLng,to:LatLng,radius?:number)方法将数字减少到10,然后使用距离矩阵将行驶距离返回到位置,因此结果可以按行驶距离(实际行进距离)进行排序,并通过请求范围内的实际行进距离缩小到最接近的3-5个位置。
(从FusionTables“比萨店”示例中借用的数据)
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
if (customerMarker) customerMarker.setMap(null);
customerMarker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
closest = findClosestN(results[0].geometry.location,10);
// get driving distance
closest = closest.splice(0,3);
calculateDistances(results[0].geometry.location, closest,3);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
function findClosestN(pt,numberOfResults) {
var closest = [];
document.getElementById('info').innerHTML += "processing "+gmarkers.length+"<br>";
for (var i=0; i<gmarkers.length;i++) {
gmarkers[i].distance = google.maps.geometry.spherical.computeDistanceBetween(pt,gmarkers[i].getPosition());
document.getElementById('info').innerHTML += "process "+i+":"+gmarkers[i].getPosition().toUrlValue(6)+":"+gmarkers[i].distance.toFixed(2)+"<br>";
gmarkers[i].setMap(null);
closest.push(gmarkers[i]);
}
closest.sort(sortByDist);
return closest;
}
function sortByDist(a,b) {
return (a.distance- b.distance)
}
function calculateDistances(pt,closest,numberOfResults) {
var service = new google.maps.DistanceMatrixService();
var request = {
origins: [pt],
destinations: [],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
};
for (var i=0; i<closest.length; i++) request.destinations.push(closest[i].getPosition());
service.getDistanceMatrix(request, function (response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
var outputDiv = document.getElementById('side_bar');
outputDiv.innerHTML = '';
var results = response.rows[0].elements;
for (var i = 0; i < numberOfResults; i++) {
closest[i].setMap(map);
outputDiv.innerHTML += "<a href='javascript:google.maps.event.trigger(closest["+i+"],\"click\");'>"+closest[i].title + '</a><br>' + closest[i].address+"<br>"
+ results[i].distance.text + ' appoximately '
+ results[i].duration.text + '<br><hr>';
}
}
});
}
问题内容: 我只是在寻找有关最佳方法的建议… 我需要创建一个搜索功能,以在邮政编码的50英里半径内搜索“用户”。我有一个邮政编码表,其中包含所有美国邮政编码及其纬度/经度,但我只是想找出构造和查询数据的最佳方式… 是否应在用户表中添加纬度/经度列,并在给定邮政编码范围内的所有用户查询它?还是应该在邮政编码表中查询半径范围内的所有邮政编码,然后在用户表中查询所有具有结果(邮政编码)的用户?要么… ?
问题内容: 我正在编写一个特定于美国的Web应用程序,因此其他国家/地区用于邮政编码的格式并不重要。我有一份我们要加载到包含以下内容的数据库表中的邮政编码列表: 5位美国邮政编码 纬度 经度 usps分类代码 状态码 城市 邮政编码是主键,因为这是我要查询的内容。我开始使用中型int 5,但是它会截断前导零的邮政编码。 我考虑使用char5,但担心对char变量建立索引会对性能造成影响。 所以我的
我在时区欧洲/柏林(+02),Postgresql运行在UTC(+00)。我需要在最晚的本地午夜日期(我的时区中当前一天的开始日期)获得带有时区的时间戳。
问题内容: 我正在尝试为Django中的基本商店定位器处理邻近搜索。我不想在我的应用中随身携带PostGIS,而是可以使用GeoDjango的距离过滤器,而是想在模型查询中使用余弦球法则距离公式。为了提高效率,我希望所有计算都可以在一个查询中在数据库中完成。 一个来自Internet的MySQL查询示例,实现了余弦的球形定律,如下所示: 该查询需要引用每个商店的经/纬度值的邮政编码外键。如何在Dj
问题内容: 我正在尝试学习如何“压缩”列表。为此,我有一个程序,在某个特定位置执行以下操作: 这给了我三个列表,,,和,每一个,比方说,大小为20。 现在,我这样做: 但是,当我这样做时: 我得到20,这不是我期望的。我预计三个。我认为我做的事情根本上是错误的。 问题答案: 将三个包含20个元素的列表放在一起时,结果将包含20个元素。每个元素都是一个三元组。 你自己看: 要找出每个元组包含多少个元
本文向大家介绍匹配邮政编码的Java程序,包括了匹配邮政编码的Java程序的使用技巧和注意事项,需要的朋友参考一下 假设我们有以下邮政编码。 现在,设置以下正则表达式以匹配美国的邮政编码。 示例 输出结果