首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索最近的商店,我们已经在谷歌地图上放置了一个标记?

如何检索最近的商店,我们已经在谷歌地图上放置了一个标记?
EN

Stack Overflow用户
提问于 2013-05-30 23:35:11
回答 2查看 2.6K关注 0票数 2

让我来解释一下这个项目。我们有一大堆有地址的商店列表。数据库中的每个地址都有一个地理位置。

现在我的问题是:当用户填写他的地址和邮政编码等,我们有他的位置和他的地理位置,有没有可能在谷歌地图中找到最近的商店基于用户的位置。如果不是通过地理位置,那么可能是基于邮政编码?

我已经查看了google地图api,但没有找到能做到这一点的jet。重要的是,它可以在我们添加到谷歌地图的商店中进行搜索。我宁愿不使用谷歌地图,而只使用:http://maps.googleapis.com/maps/api/geocode/json

如果可能的话,我们可以不使用谷歌地图,而是根据地理位置搜索数据库,这样会更好。

唯一的问题是,你如何根据地理位置或其他东西进行匹配?你只需检查其中一个是更小还是更大,还是有更多,然后比较两个?

如果有人能就如何做到这一点给我一个很好的指导,那就太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-30 23:58:24

首先使用地图,并要求用户设置他的大致位置,获取该值,使用此代码获取到每个商店的距离:

google.maps.geometry.spherical.computeDistanceBetween (latLngA,latLngB);

来自https://developers.google.com/maps/documentation/javascript/reference?hl=en-US#spherical

现在选择较短的并输出它

但我宁愿让他输入City,并通过Wolfram api请求获取距离

代码语言:javascript
复制
 $city=customer_city;
 $north=store_north; //coordinate_l
 $west=store_west; //coordinate_L
 $wolfram_query="http://api.wolframalpha.com/v2/query?appid=".$appid."&input=distance%20from%20".$city."%20to%20".$north."N%20".$west."W%20in%20km&format=image,plaintext";

并得到与xml答案之间的距离,而不是google地图

使用zipcode的另一种选择是使用这个php函数从两个坐标计算球面距离,该函数在一个while循环中遍历所有的经纬度和经度:

代码语言:javascript
复制
function calcDist($lat_A, $long_A, $lat_store[i], $long_store[i]) {

$distance = sin(deg2rad($lat_A))
            * sin(deg2rad($lat_B))
            + cos(deg2rad($lat_A))
            * cos(deg2rad($lat_B))
            * cos(deg2rad($long_A - $long_B));

$distance = (rad2deg(acos($distance))) * 69.09;

return $distance;
}  

距离是以英里为单位的,如果您想要以公里为单位的距离,请使用以下命令

代码语言:javascript
复制
 function miles2kms($miles) {
 $ratio = 1.609344;
 $kms = $miles * $ratio;
 return $kms;
 }

您可以使用以下数据库检索邮政编码的最新和最长信息:http://sourceforge.net/projects/zips/files/#fileshttp://postcodedb.sourceforge.net/dumpCSV.php

为了改善距离的结果,你应该使用Haversine或Vincenty计算...更复杂的是..

..。但我们喜欢网络的是,肯定有人在我们之前做了这件事,当然也分享了他的努力!http://www.phpclasses.org/package/6480-PHP-Calculate-the-distance-between-Earth-two-points.html这是一个实现无正弦距离的类!这样可能更好..。如果你想使用Vincenty,试试这个:Implementing Vincenty's Formula in PHP,试试哪个能给你最好的结果,即使最准确的总是wolfram,数学家们对此进行了研究,所以效果很好;)

票数 2
EN

Stack Overflow用户

发布于 2013-05-30 23:43:11

当你说“地理位置”时,你有关于这个位置的具体信息吗?我使用实体的坐标(经度和经度)以及附近感兴趣的地方的大量坐标做了类似的事情。因为lat和long (十进制)是just...decimals,所以通过找到LAT值和long值之间的最小差值来计算哪个点离另一个点最近是一个等式。

例如,如果您想要考虑点之间的旅行时间,这将变得复杂得多,但对于简单的应用程序,比较坐标就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档