【问题标题】:Google Maps Show Nearest Database Markers to My Location谷歌地图显示离我的位置最近的数据库标记
【发布时间】:2014-06-28 14:01:46
【问题描述】:

我正在尝试开发一些东西,让用户输入他们的邮政编码或部分地址,然后他们会看到靠近他们的标记。

我的所有标记都存储在数据库中。我最初的想法是从 MySQL 中带回给定范围内的结果。

例如如果我的 lat/long 是 1.500 x 2.100,那么数据库中的所有结果都会带回 lat 1.500 +/- 0.05 AND long 2.100 +/- 0.05 的行。

这可行,但我想知道 Google Maps API 中是否已经存在可以做到这一点或做得比我的想法更好的东西?

【问题讨论】:

  • 是的!为什么投反对票?有些人……

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


【解决方案1】:

我做了类似的事情,我把我的代码放在了 GitHub 上。这是一个(远未完成)应用程序,它演示了如何使用您当前的位置(使用 GeoLocation),然后在 Google 地图上查找标记。希望对您有所帮助!

https://github.com/RichBuff/TexasHistoricalMarkers

【讨论】:

    【解决方案2】:

    这是我目前的做法,直到找到更好的方法。当添加越来越多的行时,性能很可能会开始受到影响。

    PHP/SQL

    public function getMapNodes($lat, $long) {
        $SQL = 'SELECT users.id AS usersId, screenName, lat, lng,
                COALESCE(flagSrc, 0) AS flag, src
                FROM users_locations, users
                LEFT JOIN users_prefs ON users_prefs.userId = users.id
                LEFT JOIN users_images ON users_images.userId = users.id
                    LEFT JOIN languages ON users_prefs.languageId = languages.id
                WHERE users.id = users_locations.userId
                AND (? < (lat+0.2) AND ? > (lat-0.2))
                AND (? < (lng+0.3) AND ? > (lng-0.3))';
        $r = $this->db->prepare($SQL);
        $r->execute(array($lat, $lat, $long, $long));
        return $r->fetchAll();
    }
    

    如果性能确实开始受到影响,Memcache 实现将是一个不错的灵丹妙药。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2016-09-07
      • 2021-01-17
      相关资源
      最近更新 更多