Google Maps API V3:绑定世界以适应区域并禁用地图重复

时间:2012-11-26 22:26:02

标签: google-maps-api-3

设置center: new google.maps.LatLng(0,0)将设置世界的中心。 zoom: 1使默认缩放到全世界。

问题是,考虑到地图的大小为616像素×310像素,我们如何修改/调整地图大小,以便很好地适应给定的大小。例如,只显示一个世界实例,地图的底部将是非洲的底部。因此随后的世界地图将不再重复。准确地说,我们的地图绑定如下:

enter image description here

这是我到目前为止所得到的: enter image description here

2 个答案:

答案 0 :(得分:12)

在给定的缩放级别,整个世界的“图片”具有恒定的大小。 对于缩放级别1,它是512像素,对于缩放级别2 1024,3 = 2048,4 = 4096等...

为了适应整个世界而不重复它,你需要在这个缩放级别上有一个小于整个世界图片的地图div,否则它将无效。

对于缩放级别1,地图需要512以便理想地适合而不是不要换行。

https://output.jsbin.com/vabago 是一个示例,显示给定缩放级别的世界宽度并将其记录到控制台。当你放大时,它还会调整地图的大小以适应整个世界(通常这是一件很蠢的事情,但这里只是展示了它是如何工作的)。

HTH

答案 1 :(得分:0)

谷歌地图有一系列缩放级别 - 每一级都更接近一步。您可以设置地图高度和宽度(以像素为单位),然后谷歌地图api将加载相应的地图图块以填充提供的窗口。

实际上,它不允许你拉伸地图,我相信缩放1,世界的谷歌地图将是256像素×256像素。

这是一个很好的概述,进一步解释了这一点: http://troybrant.net/blog/2010/01/mkmapview-and-zoom-levels-a-visual-guide/

此外,如果您在网页中动态删除图钉,则可以使用api直接按其纬度和经度添加标记。如果您正在使用离线静态图像,那么首先,您应该查看使用开源openstreetmaps数据,因为您可能需要获得Google的进一步许可。对于openstreetmaps,您可能会考虑使用TileMill或mapnik等离线工具来放置标记?在任何情况下 - 阅读投影 - 这将解释纬度和经度坐标如何与图像上的像素位置相对应。

您还可以浏览http://gis.stackexchange.com,这是专门针对地图相关的问题。