2010-07-30 33 views
2

我正在开发一个使用Google Maps API v3的应用程序。我想要制作定制的覆盖图,每边都有1000km的正方形(每个覆盖层实际上都是1000x1000的透明png,每个像素代表1平方公里)。我目前的实施是这样的:如何转换Google地图中的自定义叠加图以进行投影计算?

function PngOverlay(map,loc) { 
    this._png = null; 
    this._location = loc; //lat,lng of the square's center 
    this.setMap(map); 
} 

PngOverlay.prototype = new google.maps.OverlayView(); 

PngOverlay.prototype.onAdd = function() { 
    this._png = new Element('image',{ //using mootools 
    'src': pngForLoc(this._location), 
    'styles': { 
     'width': 1000, 
     'height': 1000,   
     'position': 'absolute' 
    } 
}); 

var panes = this.getPanes(); 
    panes.overlayLayer.appendChild(this._png); 
} 

PngOverlay.prototype.onRemove = function() { 
    this._png.parentNode.removeChild(this._png); 
    this._png = null; 
} 

PngOverlay.prototype.draw = function() { 
    var dp = this.getProjection().fromLatLngToDivPixel(this._location);  
    var ps = this._png.getSize(); 

    var t = dp.y - (ps.y/2); 
    this._png.setStyle('top',t); 

    var l = dp.x - (ps.x/2); 
    this._png.setStyle('left',l); 
} 

我的问题是:如果有什么,我需要做什么来说明谷歌地图的投影?我对墨卡托的理解有限,是它保留了水平距离而不是垂直距离。我该如何适当地转换()我的PNG来解释这一点?

回答

0

没有足够的信息,但是您可能会发现开源proj4js库很有用,因为它可以执行各种投影转换,例如。致Google的Spherical Mercator投影系统。

相关问题