0

这个问题很有描述性。

我正在一个提供拍摄地点的网站上工作。

该站点中的所有数据当前都存储在 MySQL 数据库中,包括用于谷歌地图的地理编码数据。

我需要显示具有位置的不同伦敦行政区的多边形区域。

我将所有数据都保存为 kml 文件,理想情况下我想将其存储在 MySQL 数据库中。

我已经成功使用融合表来显示这些数据,但对我来说,为了使用融合地图图层而必须在谷歌上复制这些数据似乎很愚蠢,我可以简单地使用 kml 图层来呈现这些数据而不是必须创建一个融合表并从中渲染它?

如果是这样,是否有人可以向我指出更多信息的资源?

更新:感谢您到目前为止的回复,我想我会用更多信息更新这个问题。

我最终希望在我的地图上同时显示所有区域,然后在理想情况下单击某个区域时,它会将您带到网站上显示该特定区域位置的另一个页面。

我最初尝试使用 KML 图层,但我收到错误消息说我的 KML 无效。KML 最初存储在我的数据库表中的一个字段中,我认为这些错误可能是由于我不了解谷歌是如何读取 KML 数据的。

使用多边形实现起来要简单得多,因为我可以通过 JSON 获取这些数据,然后从中渲染多边形。

我现在知道不可能有带有多边形的信息窗口,但我宁愿使用点击处理程序直接跳转到另一个包含该特定区域信息的网站页面,而不是显示信息窗口。或者,正如建议的那样,显示一个带有该区域简要描述的工具提示和一个页面链接会更好,工具提示本身如何,是否可以在地图顶部呈现?

我有点担心我会达到 KML 的层数限制。是否可以在一个图层上使用 KML 渲染多个多边形,或者我是否需要为每个可点击区域设置一个单独的图层?

4

3 回答 3

3

Google Maps API 提供了一种非常简单的方法来绘制多边形

基本示例:

var polygon = new google.maps.Polygon({
  map: your_google_map_instance,
  paths: array_of_latlng_points,
  fillColor: "#336699",
  fillOpacity: .5,
})

编辑:对于这种方法,您需要解析您的 KML 文件(对不起,我第一次阅读时一定错过了)。您可以将 KML 文件导入KML 图层

于 2013-01-14T18:22:33.200 回答
1

您可以使用KmlLayer、FusionTablesLayer(如您所知)或原生 google.maps.Polygon 对象覆盖多边形。

KmlLayer 和 FusionTablesLayer 将它们渲染为瓦片,因此对于许多多边形(如果您只需要点击事件)会更有效。一次可以在地图上和 FusionTablesLayer 上显示的 KmlLayer 的数量存在限制(但这些似乎不会给您带来问题)。

还有可用于 KML 的第三方解析器(geoxml3geoxml-v3),它们将获取您的 KML 并将其呈现为原生google.maps.Polygon 对象。对于许多多边形,这将比基于图块的渲染效率低,但它确实允许鼠标悬停/鼠标移出,并动态更改多边形的属性。

于 2013-01-14T18:14:28.963 回答
1

您还可以尝试具有大量事件的数据层,以便在各种鼠标事件上显示工具提示、信息窗口、状态文本。请参阅文档中的示例: https ://developers.google.com/maps/documentation/javascript/datalayer

如果您有许多多边形(其中许多的实际值取决于多个因素,可能在 100 到 1,000 之间),最好使用内置图层类型。最快的是在服务器上呈现的,例如 kml 层,因为这不会在浏览器中创建数百个 DOM 元素,但仍会公开点击事件,因此可以为每个项目显示信息框。

在最坏的情况下,您可以使用图像映射实现自己的渲染,显然是通过使用像 mapnik 这样的现有库。 https://developers.google.com/maps/documentation/javascript/maptypes#ImageMapTypes

于 2014-07-09T19:58:00.267 回答