【问题标题】:Pan point on Google Map to specific pixel position on screen (API v3)将 Google Map 上的点平移到屏幕上的特定像素位置 (API v3)
【发布时间】:2010-05-06 01:25:10
【问题描述】:

overlay 是 Google 地图叠加层,offsetx, offsety 是我想要将 latlong 平移到的地图中心的像素距离时,以下工作。

var projection = overlay.getProjection();
var pxlocation = projection.fromLatLngToContainerPixel(latlong);
map.panTo(projection.fromContainerPixelToLatLng(new google.maps.Point(pxlocation.x+offsetx,pxlocation.y+offsety)));

但是,我并不总是在地图上有叠加层,map.getProjection() 返回一个projection,而不是一个没有我需要的方法的MapCanvasProjection

有没有办法做到这一点,而无需专门为其制作叠加层?

【问题讨论】:

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


    【解决方案1】:

    由于没有人想出更好的方法,这是我的解决方案。给我一个MapCanvasProjection 对象的唯一工作就是覆盖。

    var helper = new google.maps.OverlayView();
    helper.setMap(map);
    helper.draw = function () { 
        if (!this.ready) { 
            this.ready = true; 
            google.maps.event.trigger(this, 'ready'); 
        } 
    }; 
    var projection = helper.getProjection();
    ...
    

    希望这对某人有所帮助。欢迎提出更好的建议。

    【讨论】:

    • 谷歌文档说,“在 API 调用 onAdd 之前,投影不会初始化。”所以调用 helper.getProjection();创建助手后立即返回 null。所以使用这个: helper.onAdd = function(){ projection = helper.getProjection(); };
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多