纬度和;使用Google地图的澳大利亚州/地区的经度坐标数据库

时间:2010-12-05 05:13:10

标签: google-maps search

我们有一个使用Google Maps API进行基于位置搜索的数据库。然而,在澳大利亚的州或地区进行搜索是有问题的,因为谷歌地图位于各州的中心位置,澳大利亚的大多数人口中心位于海岸。

我们需要在纬度和经度上交代码,以便当有人搜索州“新南威尔士州”时,数据库会返回相关结果。有谁知道在哪里可以找到澳大利亚各州边界的坐标列表。要编码到数据库中的区域?

这将为我们忙碌的程序员节省很多时间。 提前谢谢。

4 个答案:

答案 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功能,转而采用更简单的解决方案:

  1. 我在事件表中添加了布尔列 - 澳大利亚每个州/地区都有一个。
  2. 当事件进行地理编码时,我们会将状态名称从Google Maps API结果中提取出来,然后将其与状态名称列表进行比较 - 如果匹配,我们会将该状态的标志设置为TRUE。
  3. 搜索时,状态限制只是变为WHERE in_wa = TRUE(用于搜索西澳大利亚州内的事件)。
  4. 要迁移没有设置标志的现有事件,我不想浪费PNPOLY代码,并且不想用谷歌地图处理请求,所以我写了一个迁移来运行PNPOLY检查在每个事件上并为每个事件设置正确的标志 - 由于上述相同的问题,这导致某些当前事件设置错误状态,但这不会影响将来的事件。
  5. 您可以在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自行生成多边形坐标。

希望这有助于解决某人的痛苦。