我们有一个使用Google Maps API进行基于位置搜索的数据库。然而,在澳大利亚的州或地区进行搜索是有问题的,因为谷歌地图位于各州的中心位置,澳大利亚的大多数人口中心位于海岸。
我们需要在纬度和经度上交代码,以便当有人搜索州“新南威尔士州”时,数据库会返回相关结果。有谁知道在哪里可以找到澳大利亚各州边界的坐标列表。要编码到数据库中的区域?
这将为我们忙碌的程序员节省很多时间。 提前谢谢。
答案 0 :(得分:3)
我是开发者的名字 - 我想我应该谈谈我们最终为实现这个功能所做的事情:
为了澄清实际使用的内容,此数据库用于搜索可能具有地理位置的事件。
起初我发现了这个免费的地图数据:https://www.ga.gov.au/products/servlet/controller?event=GEOCAT_DETAILS&catno=60803。
然而,数据难以使用,我们决定使用Google地图的“我的地图”功能(RMW所做的)简单地生成每个州的基本轮廓。
然后我创建了PNPOLY函数的pl / sql实现,并编写了搜索代码以运行PNPOLY函数,将每个事件的lat和lng与状态轮廓(从My Maps导出)进行比较,并仅返回事件内的事件边界。
这有两个主要问题:
除了第一个问题 - 城镇出现在错误的状态时,这种实施可能会很好。
目前的实施放弃了PNPOLY功能,转而采用更简单的解决方案:
您可以在http://collectiveaction.com.au/events看到它的实际效果 - 从状态下拉列表中选择,然后点击“更新搜索结果”。
答案 1 :(得分:1)
您可以将澳大利亚州边界下载为OpenStreetMap作为XML文件。请注意data license要求您分享衍生作品。
答案 2 :(得分:0)
只是一个想法,实际上可以有一个javascript数组,其中包含状态名称和你想要将地图居中的相关latlong吗?
所以如果有人找新南威尔士州,那么你加载-33.833578,151.190872。
function initialize() {
var myLatlng = new google.maps.LatLng( -33.833578,151.190872);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
如果有帮助,请告诉我。否则你可以联系我,因为我在阿德莱德:)
干杯,
Ives的
答案 3 :(得分:0)
我正在分享我的要点:XML of state polygons。但是,对于某些州来说,它会带来太多多点,如果您需要将一个点与状态匹配,它可能会成为性能杀手。如果您想拥有一个简单版本,可以尝试使用此tool自行生成多边形坐标。
希望这有助于解决某人的痛苦。