谷歌地图 KML 图层初始缩放和居中
Posted
技术标签:
【中文标题】谷歌地图 KML 图层初始缩放和居中【英文标题】:Google maps KML layer initial zoom and centre 【发布时间】:2016-11-28 04:47:18 【问题描述】:我在网页上有一个现有地图,该地图使用以下脚本段正确缩放和居中: var mapOptions = 中心:纬度:43.57023,液化天然气:-79.48676, 缩放:12 map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
然后我使用以下方法添加 kml 层: var myLayer = new google.maps.KmlLayer( url: "" ); myLayer.setMap(map);
这在去年一直有效。但是我必须更新 kml 文件以包含更广泛的区域。新的 kml 文件有效,但新的缩放和中心位置没有得到尊重。
map = new google.maps.Map(document.getElementById("map-canvas"),
center: lat: 48.0, lng: -89.0 ,
zoom: 4
);
相反,地图被缩小了,所以我看到了 3 个完整的地球,每边都有一点,中心在北极上方。您可以在http://www.a711lions.ca/recycleforsight/locationmap.html 和http://www.a711lions.ca/recycleforsight/locationmap2.html 看到两个不同的结果。
我已经读到我可以使用 layer.preserveViewport 设置来克服这个问题,但我试图理解它为什么会发生。 AFAICT 这些点都在加拿大(它们当然不会像在其他任何地方一样出现在三地球视图中)那么为什么 KML 层如此巨大?
有什么想法吗?
【问题讨论】:
【参考方案1】:您的 KML 文件包含一个错误点:
<Placemark>
<name>Dr. Sibbald</name>
<description><![CDATA[<br><b>Address:</b> Applewood Shopping Ctre, Suite 210, 1077 N. Service Rd<br><b>City:</b> Mississauga<br><b>Postal Code:</b> L5R 2X5<br><b>Telephone:</b> (905)273-9009<br><b>Sponsoring Club:</b> Mississauga Credit Valley Lions Club]]></description>
<styleUrl>#icon-503-DB4436</styleUrl>
<Point>
<coordinates>-3.0,90.0,0.0</coordinates>
</Point>
<!-- ... -->
</Placemark>
它位于北极。
【讨论】:
好的,谢谢。我昨天在使用正则表达式对坐标进行了完整性检查后发现了它。尽管如此,它不应该导致这种奇怪的行为。这似乎禁止标记圣诞老人的工作室。 :) 如果我把它放在一个荒谬的位置,比如北纬 91 度,那么我希望它会被忽略或标记为“离开地球”。如果它位于合法位置,则应进行映射。 如果您在北极有一个点,地图将显示它(缩小以包括它),并且 90 度与谷歌地图上使用的墨卡托投影有问题。 这一点似乎被问题所反驳。该位置位于北极(北 90 度),经度不相关 - -3 度与任何其他经度一样有效。实际变焦远大于整个地球,北极没有标记。在这种情况下,投影应该使用 -3 来显示位于本初子午线以西的标记。抱歉,除了 Google 代码中的错误之外,我真的无法将其视为其他任何东西。 我不会评论它是否应该是一个错误,只是虽然在现实世界中 90 度在物理上是可能的,但在墨卡托投影上大于 85 度的纬度没有意义(或在谷歌地图上)。而且由于修复“坏”点可以解决问题,因此不值得花任何时间在(IMO)上。您可以在issue tracker 中创建问题,他们可能会接受。以上是关于谷歌地图 KML 图层初始缩放和居中的主要内容,如果未能解决你的问题,请参考以下文章