Google地图向我的位置显示最近的数据库标记

时间:2014-06-28 14:01:46

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

我正在尝试开发用户输入邮政编码或其部分地址的内容,然后显示他们附近的标记。

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

E.g。如果我的纬度/经度是1.500乘2.100那么数据库中的所有结果都会带回行为1.500 +/- 0.05且长2.100 +/- 0.05的行。

这样可行,但我想知道Google Maps API中是否存在可以执行此操作的内容,还是比我的想法做得更好?

2 个答案:

答案 0 :(得分:0)

我做了类似的事情,我将代码放在GitHub上。这是一个(远非完整的)应用,它演示了如何使用当前位置(使用GeoLocation),然后在Google地图上查找标记。希望这能帮到你!

https://github.com/RichBuff/TexasHistoricalMarkers

答案 1 :(得分:0)

以下是我现在正在做的事情,直到找到更好的方法。当添加越来越多的行时,性能很可能会受到影响。

<强> 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实现将是一个很好的银弹。