所以我的目标是将半径保存在数据库中。我不确定我是否需要使用kml。然后我希望网站用户能够按地点搜索并为搜索提供半径。当然应该显示相应的数据库条目。这意味着搜索将是一个半径的地方,它也必须搜索已保存半径的数据库。这可能吗?如何最好地保存区域?我如何使用Google maps api执行这样的搜索?非常感谢提前。
答案 0 :(得分:1)
Google Maps API v3本身不提供此类功能,但它确实为提供基于半径的搜索的API提供了包装,如
您自己的记录,存储在fusiontable中。请参阅FusionTableQuery
Google商家信息,请参阅PlaceSearchRequest
Google Maps Engine(我不确定您是否可以通过客户端半径进行过滤),请参阅MapsEngineLayer
现在,由于您已经计划将数据保存到数据库,因此您不需要依赖Google Maps API嵌入式功能。您可以自己查询数据库,稍后以标记的形式处理结果,例如
任何启用地理位置的数据库都允许您搜索半径,指定中心,半径以及可选的按距离排序。如果你想搜索距离{lng:30,lat:70} 1000米范围内的所有记录,iIn MongoDB就像是
db.Yourpoints.find({
"location":{
$near:{
"type": "Point",
"coordinates": [
-70,
30
]
},
$maxDistance: 1000
}
});
而在PostgreSQL(使用Postgis)中它会像
SELECT *
FROM Yourpoints
WHERE ST_Distance_Sphere(the_geom, ST_MakePoint(-70,30)) <= 1000
编辑哦,我不明白为什么要在数据库中保存半径。你的意思是,保存预定义的查询?坚持结果集?