2012-11-14 49 views
1

我使用Google Maps API v3創建了自定義地圖。這是一個虛構世界的矩形地圖,而不是真實世界中的任何東西。地圖投影像素到LatLng比例?

我一直在閱讀關於如何在自定義Google地圖中使用投影的文章。我需要使用投影,因爲使用投影來放置標記和區域,它們不會水平重複。不管怎麼說,我把下面的代碼從一個教程:

var tilesize = 256; 

function MyProjection(){} 

MyProjection.prototype.fromLatLngToPoint = function(latLng) 
{ 
    var x = latLng.lng() * tileSize; 
    var y = latLng.lat() * tileSize; 
    return new google.maps.Point(x, y); 
}; 

MyProjection.prototype.fromPointToLatLng = function(point) 
{ 
    var lng = point.x * (1.0/tileSize); 
    var lat = point.y * (1.0/tileSize); 
    return new google.maps.LatLng(lat, lng); 
}; 

function LatLngToPixels(latLng) 
{ 
    var pnt = MyProjection.prototype.fromLatLngToPoint(latLng); 
    return [pnt.x * 8, pnt.y * 8]; 
} 

function PixelsToLatLng(pxs) 
{ 
    var pnt = {x: pxs[0]/8, y: pxs[1]/8}; 
    return MyProjection.prototype.fromPointToLatLng(pnt); 
} 

我已經把它應用到我的地圖,它似乎工作。但是,我試圖弄清楚如何改變投影的比例。當我放置這樣的標記時:

new google.maps.Marker(
{ 
    map: map, 
    position: new google.maps.LatLng(0, 0) 
}); 

標記放置在地圖的左上角。如果我這樣做:

new google.maps.Marker(
{ 
    map: map, 
    position: new google.maps.LatLng(1, 1) 
}); 

標記放置在右下角。

所以我基本上有一個最低的經度和緯度0和1一個最大的工作。我怎樣才能改變上述功能,使規模更具管理性?像0到90或0到180?從現實世界的經度和緯度座標來看,這有點更有意義嗎?或者這對於預測來說是不可能的?我有點被預測的思想,究竟他們的最終目的是使也許我錯過了點迷糊......

回答

5

投影的目的是顯示3D對象,(就像行星) ,在2D表面上(如一張紙或一個電腦屏幕)。

Here is a Google example包含墨卡託投影對象。另外,谷歌地圖API V3使用的與該整個世界在縮放等級0上的256×256個像素的單個瓦片表示,並且然後根據所述變焦級別放大World Coordinates的概念,以便

pixelCoordinate = worldCoordinate * Math.pow(2,zoomLevel)