根据搜索放置Google地图标记

时间:2012-07-10 12:54:03

标签: javascript html google-maps google-maps-api-3 maps

我正在尝试实施Google地图。 第一部分是将地图定位到一个特定的地址,这非常好。

我的下一个问题是,我必须根据商店名称的搜索在地图上放置商店的标记。标记应该可以连接到搜索结果,以便在单击时显示信息气泡。如何做到这一点,我完全无能为力。

google map with result

1 个答案:

答案 0 :(得分:1)

我的步骤对我来说似乎没问题,我认为搜索商店名称会转到您的服务器,然后您会返回一些包含商店名称和地址的结果,然后您可以使用Google地理编码API和获取lat / lng坐标并将标记放在地图上,以下是我可能会使用的步骤:

  • 创建地图
  • 以特定地址为中心
  • 搜索商店
  • 如果结果与地理编码相关联,则只需使用它来放置标记。
  • 如果结果没有lat / lng,则向Google Geocoding API发出请求以获取lat / lng坐标。之后放置标记,将收到的地理编码存储到您的数据库中(通过使用一些后台Ajax请求)。

Google Geocoding API best practices建议您应存储地理编码,这样您就不必每次都向Google的服务器进行查询。为此,您需要修改后端,以便它还可以存储地理编码以及商店详细信息,如果可用,您可以在搜索结果中返回地理编码。

另外,您可以使用GMaps JavaScript库轻松进行地图操作。

<强>更新

上述解决方案在您修订的方案中完美运行。让我再说一遍流程:

  1. 后端会在按商店名称搜索时返回商店列表(我猜这应该很简单)
  2. 如果结果不为空,则遍历列表并查看是否所有结果都与lat / lng值相关联。
  3. 如果您没有找到记录的lat / lng值,则向Google的服务器发送Geocode请求,传递商店的地址(您需要至少拥有商店的地址,否则您无法获得lat来自Google的/ lng值)作为参数。如果记录具有纬度/经度值,则只需继续并在地图上放置标记。
  4. 收到Geocode API的回复后,请继续使用提供的地图库API在地图上放置标记。对于GMaps,它是map.addMarker({...})
  5. 完成所有请求后,您可以考虑优化之前建议的位,您可以将接收的地理编码存储在您自己的服务器中,这样您就不必再次获取它们。
  6. 要实现上述步骤,您需要熟悉Maps JS库以及JavaScript和Ajax / JSONP。请记住,您所有的Geocode请求(我认为JSONP)都是异步的,您应该仅在响应可用时(通常在回调中)调用标记放置代码。 GMaps库示例非常简单易用。我希望这个解释应该足以解决你的问题,如果它对你有所帮助,那么你可以考虑将这个问题作为答案。