Google maps 我如何实施一个;“查找最近的”;类型功能?

Google maps 我如何实施一个;“查找最近的”;类型功能?,google-maps,maps,Google Maps,Maps,嗨, 我想知道是否有人对如何实现功能有任何想法,如果给定一系列位置(例如分支机构),它将列出最近的位置或半径为5英里的所有位置等?当你说“位置”时,你的确切意思是什么?街道地址?GPS坐标 如果您有GPS坐标(或可以将地址转换为坐标),则始终可以计算两点之间的或(更精确)。计算当前位置和每个潜在目的地之间的距离,然后按最短距离对列表进行排序 你没有提到你是否在使用谷歌地图API,但这里有一些额外的信息,以防你使用。您可以将两个点存储为GLatLng类型的对象,并使用object1.distanc

嗨, 我想知道是否有人对如何实现功能有任何想法,如果给定一系列位置(例如分支机构),它将列出最近的位置或半径为5英里的所有位置等?

当你说“位置”时,你的确切意思是什么?街道地址?GPS坐标

如果您有GPS坐标(或可以将地址转换为坐标),则始终可以计算两点之间的或(更精确)。计算当前位置和每个潜在目的地之间的距离,然后按最短距离对列表进行排序

你没有提到你是否在使用谷歌地图API,但这里有一些额外的信息,以防你使用。您可以将两个点存储为
GLatLng
类型的对象,并使用
object1.distanceFrom(object2)
计算该值。您还可以创建一个表示地图上矩形区域的
glatlngbunds
对象,并使用
glatlngbunds.containsLatLng(latlng:GLatLng)
查看地理点是否位于该区域内

编辑:在您下面提到的情况下,通常发生的情况是,当用户输入邮政编码时,“当前位置”被视为该邮政编码的地理中心(您可能必须从您所在地区的邮政编码分配机构处获取此信息)。如果您在英国,我们将提供免费的邮政编码及其坐标列表。在谷歌地图中搜索一个邮政编码会将你带到该邮政编码的中心;如果您需要建立自己的邮政编码和坐标列表,您可能可以创建一个脚本,该脚本将遍历所有有效的邮政编码,并使用谷歌地图查找它们并将其转换为GPS坐标

要将地址转换为坐标,您需要执行所谓的地理编码。谷歌地图有一个API来实现这一点,还有其他资源可以为您提供这一功能。例如。您使用的资源在很大程度上取决于您所在的位置,因为这些信息大部分都是本地化的。您没有提到太多关于您的项目(平台、语言等),但在该页面的底部有一个名为“地理编码助手库”的部分,该部分可能具有您需要的功能,并将其集成到一个预构建的包中。特别是GeoKit库(Ruby语言)在的首页上有一些示例,其中有几个看起来像是您想要做的事情

编辑:我从代码生成器处获得以下代码:

您应该能够修改此C代码以满足您的需要。具体地说,在对
新XPathDocument
的调用中,将字符串中读取
?q=new+York
的部分更改为您需要的任何地址或邮政编码(例如,使用
?q=1060+West+Addison%2C+Chicago%2C+IL
将检索芝加哥箭牌场的信息,或使用
?q=LS11+0ES%2C+UK
将获取利兹邮政编码的信息)。若要从常规文本字符串格式化地址,请将空格更改为“+”,并将所有其他非字母数字字符转换为其ASCII等效字符(例如,逗号为“%2C”)

接下来的几行从服务器检索信息,并以各种方式对其进行解析。有趣的是返回数据中的字段
/kml/Response/Placemark/Point/coordinates
。此字符串将包含您在上面指定的位置的纬度和经度坐标


现在,这将为您提供足够的信息来创建一个C#函数,该函数能够将地址或邮政编码转换为一对坐标。困难的部分已经完成,但还有两个步骤。首先,您希望使用它为数据库中的每个地址生成坐标(将这些坐标与地址一起存储在数据库中以获得最佳结果).现在,当用户输入地址时,再次调用C#函数为其位置生成一组坐标。现在您已经拥有了所有坐标,您可以使用我在文章顶部链接的两个距离计算函数中的一个来找到两个坐标之间的距离。运行分支列表,计算用户到每个分支的距离,并对该列表进行排序,以找到具有最短距离值的分支。

您打算使用谷歌地图还是不使用谷歌地图(位置包含在位置中)。我现在没有偏好,我愿意接受建议。我已经有一个地址列表,其中包含位置的邮政编码。嗨,我有位置(分支机构)的邮政编码和街道地址,我想做的是如果用户输入邮政编码(他的家庭地址)然后,我想列出最近的分支机构,并描述它们大约相距多远。我在许多大型商店网站上看到过这种做法,并想做一些类似的事情。嗨,如果我不使用谷歌地图,我该怎么做呢?我的位置列表大约是18000,所以如果a要输入邮政编码,它将如何计算出n的列表最早的位置及其距离?如果您可以选择使用Ruby语言代码,我建议使用GeoKit库(上面的链接)。如果您将位置列表存储在数据库中,您可以使用类似其示例的标记为“从zipcode中心按距离排序”或“在地址附近查找”的内容。为了减少每个地址的工作量,您还可以存储每个分支机构所在的州/省/县/地区。当用户输入地址时,它可以将搜索范围限制在同一地区内的分支机构。在技术方面,我将使用asp.net c#,但我想我必须找到一家能够提供服务的hostig公司o支持Ruby,我以前从未使用过它,所以对它不熟悉。
/**
 * Copyright WebRPC
 * available under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991
 * http://www.gnu.org/licenses/gpl.txt
 */
public class Client
{
    public static void Main(string[] args)
    {
        // make the call
        XPathDocument doc = new XPathDocument(@"http://maps.google.com/maps/geo?q=New+York&output=xml&key=ABQIAAAAuXdMTY5VIU1FvkgOOP1dNBTsILMTMKRV-aJhd94IQkaJhVJ0YBS2qNSZGm8TaefqbXBT6lUXeMZ6tA");

        // print the outputs
        XPathNavigator nav = doc.CreateNavigator();
        XPathNodeIterator coord = nav.Select( "/kml/Response/Placemark/Point/coordinates" );
        while ( coord.MoveNext() )
            System.Console.WriteLine( coord.Current );
        XPathNodeIterator accuracy = nav.Select( "/kml/Response/Placemark/AddressDetails/@Accuracy" );
        while ( accuracy.MoveNext() )
            System.Console.WriteLine( accuracy.Current );
    }
}