gpt4 book ai didi

javascript - 自定义投影的不稳定叠加行为,Google Maps API v3

转载 作者:行者123 更新时间:2023-11-28 02:25:20 27 4
gpt4 key购买 nike

我想使用 Google Maps API 浏览单个图像,我已为其定义了自己的投影。我想使用 GroundOverlay 而不是多个图像图 block ,因为我只有一张小分辨率图像,但我希望它仍然可以缩放。但是,在尝试使用此投影时,我遇到了一些不稳定的行为:

  1. 在缩放级别 0 时根本不显示叠加层。
  2. 在缩放级别 1 及更高级别时,标记会显示,但 GroundOverlay 仍然不会显示。
  3. 但是,如果我从任何级别缩小,我都可以让 GroundOverlays 显示非常短暂。它只会在缩小时显示并立即再次消失。另外,虽然它确实很快就会出现,但它不会出现在正确的坐标处,但标记会出现。

我对 API 相当陌生,所以如果这是我的一个简单疏忽,我不会感到惊讶,但我只是看不出是什么导致了这种情况。这是我的投影的代码,它只是将纬度/经度线性映射到 map 坐标:

function EvenMapProjection() {
var xPerLng = 512/360;
var yPerLat = 512/180;
this.fromLatLngToPoint = function(latlng) {
var x = (latlng.lng()+180)*xPerLng;
var y = (latlng.lat()+90)*yPerLat;
console.log('Lng', latlng.lng(), 'Lat', latlng.lat(), '-> Point', x, y);
return new google.maps.Point(x, y);
};
this.fromPointToLatLng = function(point) {
var lat = point.y/yPerLat-90;
var lng = point.x/xPerLng-180;
console.log('Point', point.x, point.y, '-> Lng', lng, lat);
return new google.maps.LatLng(lat, lng);
};
}

我在没有投影的情况下尝试执行的操作的示例(使用默认的墨卡托投影):

http://95.156.209.71/tmp/a.html

与上面定义的投影相同的示例:

http://95.156.209.71/tmp/b.html

最后是一个使用投影但没有 GroundOverlay 的示例,而是仅使用平铺图像(始终是相同的图像):

http://95.156.209.71/tmp/c.html

最后一个链接还显示 L​​atLng(0, 0) 处的标记出现在缩放级别 1(或更高),但不在级别 0。

是否有我遗漏的东西,或者一些有缺陷的代码,或者这实际上是 API 中的问题?

最佳答案

我刚刚发现我的错误在于地面覆盖层的定义。我当时处于缩放级别 0,这意味着我将覆盖范围设置为从 (-90,-180) 到 (90,180),但 API 似乎对这些级别有问题,因为它们包含经度,因此我感到很奇怪错误。我将其调整为最小缩放级别 1,并将叠加层从 (-45,-90) 设置为 (45,90),现在一切正常。

关于javascript - 自定义投影的不稳定叠加行为,Google Maps API v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15052324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com