16

我想创建一个网格,我将覆盖谷歌地图。网格必须是静态的,这意味着 1km² 的网格必须完全位于同一位置,并且必须使用唯一的 ID 进行识别。如何在谷歌地图和 php 中实现这一点?

最好的,redshark1802

编辑:忘了提到我必须直接与这些网格进行交互,这意味着更改每个字段的颜色/样式。我找到了一些已经这样做的网站https://ownthisworld.com/

4

3 回答 3

10

您的问题的答案可以在Google Maps API (v3)中找到。

这里的基本方法是:

  1. 使用Map 对象的 getBounds() 方法查找地图的边界。结果是一个LatLngBounds 对象,您可以从中提取地图角落的纬度和经度坐标。
  2. 计算地图的南北、西和东之间的距离(公里)米。使用此距离来确定您应该绘制多少条线(距离为 1 公里)。
  3. 以PolyLines的形状绘制网格,允许设置一些选项,例如颜色和宽度。
  4. 如果您还想绘制绑定了事件的矩形(如您的示例中所示),您可以使用带有某些选项的Rectangle。您可以将“单击”事件绑定到这些矩形,以便与它们进行交互。或者,您可以使用鼠标在地图上单击的坐标来识别单击了哪个方格。

扩展信息: 如果您知道在哪里绘制网格,您也知道在哪里绘制矩形,因为矩形的边缘基本上是网格线的线段。那么你怎么知道在哪里画网格线呢?如果您决定一个标准零点(例如赤道和本初子午线的交汇点),并且基本上从那里开始绘制网格线,那么您将始终将网格线(以及矩形)定位在同一位置。请注意,您只绘制地图边界视图内的那些网格线。这样,通过例如左上角来识别矩形也相当容易……它将始终位于同一位置。

于 2012-05-01T15:16:28.290 回答
7

也许这些例子会有所帮助: 是一个固定大小的网格 - 使用 NW latlng 定位它并使用高度和宽度变量对其进行调整

是一个网格,可以调整大小并移动以覆盖地图区域(或多或少)

它们都将矩形存储在 rectArr 数组中,因此您可以通过访问它们来操作它们的选项等。

于 2012-05-06T13:07:07.363 回答
2

你想要一个四键。Geohash 使用类似的系统。您可以寻找一个 L 系统来编写 az 曲线,或者您可以在 phpclasses.org(希尔伯特曲线)上获取我的代码。这是关于它如何工作的很好的教程:http: //blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves

于 2012-05-01T15:00:39.140 回答