【问题标题】:Google Maps API V3: search markersGoogle Maps API V3:搜索标记
【发布时间】:2012-05-11 10:32:56
【问题描述】:

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

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

有人有这方面的经验或能帮助我吗?

【问题讨论】:

  • 我也想找到解决方案 - 你有什么办法吗?
  • 运气好了吗?面临同样的问题。
  • 仍然没有答案?
  • 我也对答案感兴趣。
  • 无代码否决。

标签: google-maps search


【解决方案1】:

最好的方法是维护您自己的从数据库中提取的引脚数据集并在您自己的代码中处理对它们的搜索。要实施,您需要保存对您为该数据集中每个位置创建的引脚的引用。因此,从数据库中获取位置,在本地保存,将它们添加到地图中,使用对创建的 pin 的引用更新本地数据存储,然后将您的搜索连接到您的数据集,最后居中或您想要在地图 pin 上发生的任何事情您为该结果保存的参考。

这个谷歌演练很好地概述了这种类型的解决方案。 https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1#creating-the-table

【讨论】:

    【解决方案2】:

    【讨论】:

    • 问题与开发人员添加到地图的图钉有关。不从 Google 搜索地点或兴趣点。
    【解决方案3】:

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

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

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

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

    *这里 我们还可以使用 MongoDB 搜索参数 $near 及其关联 属性 maxDistance 和spherical 来指定我们的范围 寻找覆盖。我们将查询主体的距离相乘 到 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);
      });
      

      });

    您还可以阅读有关 geojson 的信息或使用 MEAN 堆栈参考此 Google 地图项目。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多