Google Maps API V3:搜索标记

时间:2012-05-01 22:50:18

标签: google-maps search

我正在为客户构建谷歌地图,他们希望能够搜索我已经添加到地图中的标记。

我已经构建了V3 API映射,它从MySQL表中获取标记并将它们推送到标记数组中,但我正在努力设置一个搜索框,列出搜索查询的任何匹配项。

任何人都有过这方面的经验或能够帮助我吗?

3 个答案:

答案 0 :(得分:1)

通过维护自己从数据库中提取的引脚数据集并在您自己的代码中处理它们的搜索,您将获得最佳服务。要实现,您需要保存对该数据集中每个位置创建的引脚的引用。因此,从数据库获取位置,在本地保存,将它们添加到地图,使用对创建的引脚的引用更新本地数据存储,然后将搜索挂钩到数据集,最后将中心或任何您想要发生在地图引脚上您已为该结果保存的参考。

此谷歌演练是对此类解决方案的一个很好的概述。 https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1#creating-the-table

答案 1 :(得分:0)

答案 2 :(得分:0)

对于node.js后端服务器,如果您已将数据注册到数据库中,则此处是查找元素的解决方案。

  1. 首先,我们为URL创建了一个新的POST请求处理程序 后缀/查询。这个处理程序需要一个JSON或一个用于mysql数据库请求体的数组 指定三个参数:纬度,经度和距离。这些 然后转换参数并将其存储为变量 处理程序。

  2. 然后,我们使用查询生成器创建了一个通用的Mongoose查询 格式。此格式首先建立一个通用查询对象 等于对我们数据库中所有用户的未经过滤的搜索。

  3. 如果提供了距离,查询构建器将添加新搜索 条件,过滤掉距离内的所有用户 提供查询的坐标(纬度,经度)。 *

  4. *在这里     我们也可以使用MongoDB搜索参数$ near及其相关联     属性maxDistance和sphere指定我们的范围     期待掩护。我们将查询体的距离相乘     到1609.34,因为我们想要接受用户的输入(以英里为单位)和     将其转换为MongoDB期望的单位(以米为单位)。(对于mongoDB用户)

    1. 最后,我们指定应确定距离 假设球形表面。这很重要,因为我们会 评估全球的距离,而不是平面 欧几里德表面。

    2. 最后,我们使用query.exec指示Mongoose运行final 查询。如果查询没有遇到错误,它将提供JSON 符合条件的所有用户的输出。

      //检索满足一组查询条件的所有用户的JSON或数组记录 app.post(' / query /',function(req,res){

      // Grab all of the query parameters from the body.
      var lat             = req.body.latitude;
      var long            = req.body.longitude;
      var distance        = req.body.distance;
      
      // Opens a generic Mongoose Query. Depending on the post body we will...
      var query = User.find({});
      
      // ...include filter by Max Distance (converting miles to meters)
      if(distance){
      
          // (optional)Using MongoDB's geospatial querying features. (Note how coordinates are set [long, lat]
          query = query.where('location').near({ center: {type: 'Point', coordinates: [long, lat]}, OR Your own query to be specified here.
      
              // Converting meters to miles(For mongoDB users). Specifying spherical geometry (for globe)
              maxDistance: distance * 1609.34, spherical: true});
      }
      
      // ... Other queries will go here ... 
      
      // Execute Query and Return the Query Results
      query.exec(function(err, users){
          if(err)
              res.send(err);
      
          // If no errors, respond with a JSON of all users that meet the criteria or you can also enter the array number you want to pass.
          res.json(users);
      });
      

      });

    3. 您还可以阅读geojson或使用MEAN堆栈参考此Google地图项目。