我正在尝试开发用户输入邮政编码或其部分地址的内容,然后显示他们附近的标记。
我将所有标记存储在数据库中。我最初的想法是从MySQL中获取给定范围内的结果。
E.g。如果我的纬度/经度是1.500乘2.100那么数据库中的所有结果都会带回行为1.500 +/- 0.05且长2.100 +/- 0.05的行。
这样可行,但我想知道Google Maps API中是否存在可以执行此操作的内容,还是比我的想法做得更好?
答案 0 :(得分:0)
我做了类似的事情,我将代码放在GitHub上。这是一个(远非完整的)应用,它演示了如何使用当前位置(使用GeoLocation),然后在Google地图上查找标记。希望这能帮到你!
答案 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实现将是一个很好的银弹。