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

标签 javascript google-maps google-maps-api-3

我想使用 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/

相关文章:

android - 谷歌地图多个标记不显示,一个显示另一个隐藏反之亦然

javascript - php 检索多个 json 对象数组

javascript - 检测数字格式文化设置

javascript - IE 问题 : Submitting form to an iframe using javascript

javascript - 向 Google Maps API 添加北/南/东/西控件

javascript - 基于谷歌地理编码器中未知地址的建议

javascript - 在 Safari 中获取 Google map 链接或网页链接

javascript - AngularJs 将选项附加到选择框

javascript - javascript中对象内部的对象

javascript - 谷歌地图嵌入API随时间出现的问题