我可以重置自定义地图类型的latlng坐标吗?

时间:2012-06-25 15:25:26

标签: google-maps google-maps-api-3

我使用google maps api制作了自己的地图。它是基于非常大的图像的自定义地图类型。

无论如何我可以重置latlng坐标,使它们相对于我的图像而不是地球的默认latlng坐标?

即。设置图像的左上角(0,0)。

感谢。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用自己的custom projection definitions。我用一个简单的投影修改了这个lunar surface example,左上角是(0,0)和右下角,(50,50)。您很可能需要更改值才能使用您的应用。

我在极限情况下玩了一下,对于纬度来说仍然是+/- 90的硬限制,对于经度来说仍然是+/- 180。经度将环绕180度。也就是说,似乎无法定义(100,200)的自定义坐标。

在此处查看修改过的月球表面演示,单击任意位置以在警报中显示自定义latLng:

http://jsfiddle.net/yV6xv/79/

function percentProjection() {};

percentProjection.prototype.fromLatLngToPoint = function(latlng) {
    // pixel size of tile at zoom 0
    var max = 256;

    // define bottom-right corner as (50, 50)
    var x = max * latlng.lng() / 50;
    var y = max * latlng.lat() / 50;
    return new google.maps.Point(x, y);
};

percentProjection.prototype.fromPointToLatLng = function(pixel) {
    // inverse conversion
    var max = 256;
    var lng = pixel.x / max * 50;
    var lat = pixel.y / max * 50;
    return new google.maps.LatLng(lat, lng);
};