2009-07-24 82 views
0

我正试图让infoWindow在正在处理的Google地图集成的正确位置(正好在图像的右上角/左上角)显示。每当我尝试调整“infoWindowAnchor”它似乎不工作?但是,“iconAnchor”似乎按预期工作。我想知道是否有人曾经遇到类似的情况?我正在使用一个自定义图标,但即使当我恢复到Google提供的标准图标时,infoWindow似乎也显示不正确(尾部位于图标上,而不是位于其右上角)。Google Maps API infoWindowAnchor不工作?

下面是我用来使这一切工作的代码。重要的部分在这里,但我已经删除了一些诊断时可能遇到的其他功能。

$(document).ready(function() { 

    var centerLatitude = 37.782112; 
    var centerLongitude = -122.419281; 
    var sanFran = new GLatLng(centerLatitude, centerLongitude); 
    var startZoom = 12; 
    var map; 
    var icon; 

    // Creates a default icon using our tuberent image 
    var myIcon = new GIcon(); 
    myIcon.image = baseurl + 'my/imageFolder/markerFolder/image.png'; 
    myIcon.shadow = baseurl + 'my/imageFolder/markerFolder/shadow.png'; 
    myIcon.iconSize = new GSize(25,25); 
    myIcon.shadowSize = new GSize(38,25); 
    myIcon.iconAnchor = new GPoint(13,25); 
    myIcon.infoWindowAnchor = new GPoint(13,0); 
    myIcon.printImage = baseurl + 'my/imageFolder/markerFolder/printImage.gif'; 
    myIcon.mozPrintImage = baseurl + 'my/imageFolder/markerFolder/mozPrintImage.gif'; 
    myIcon.printShadow = baseurl + 'my/imageFolder/markerFolder/printShadow.gif'; 
    myIcon.transparent = baseurl + 'my/imageFolder/markerFolder/transparent.png'; 
    myIcon.imageMap = [22,0,22,1,22,2,21,3,21,4,21,5,21,6,21,7,23,8,24,9,24,10,22,11,22,12,22,13,22,14,22,15,22,16,22,17,22,18,22,19,22,20,22,21,22,22,22,23,22,24,2,24,1,23,1,22,1,21,1,20,1,19,1,18,1,17,1,16,1,15,1,14,1,13,1,12,1,11,0,10,0,9,1,8,3,7,4,6,5,5,7,4,8,3,9,2,10,1,11,0]; 

    map = new GMap2(document.getElementById('map')); 
    map.addControl(new GMapTypeControl()); 
    map.addControl(new GLargeMapControl3D()); 
    map.setCenter(sanFran, startZoom); 

    /* Some Random Code and Functions here .... */ 

    var point = new GLatLng(location.lat, location.lng); 
    var marker = new GMarker(point, myIcon); 
    map.addOverlay(marker); 

    /* Some Random Code and Functions here .... */ 

    GEvent.addListener(marker, "click", function(){ 
     var randomText = "Just some random test text"; 
     var myHtml = "<b>#" + location.id + "</b><br/>" + location.neighborhood + "<br/>" + randomText; 
     map.openInfoWindowHtml(point, myHtml); 
    }); 
}); 

$(document.body).unload(function() { 
    if (GBrowserIsCompatible()) { 
     GUnload(); 
    } 
}); 

回答

1

您也可以尝试设置pixel offset in the GInfoWindowOptions of openInfoWindowHTML()。

你可以移动信息窗口吗?通过设置非常大的值来测试?

否则,我怀疑这是答案,但我会尝试一下以防万一。

Google Maps API:。 “一旦我们创建通过的GMap2构造的地图,我们需要初始化该初始化与使用地图的setCenter的完成()方法setCenter()方法需要的GLatLng坐标和缩放级别,并且此方法必须在地图上执行任何其他操作之前发送,包括设置地图本身的任何其他属性。“

您在调用setCenter()之前添加了几个控件。

+0

感谢您的反馈意见。我实际上意识到我做错了什么。 当我调用openInfoWindowHtml方法时,我像这样调用它:map.openInfoWindowHtml(point,myHtml); 而不是:marker.openInfoWindowHtml(myHtml); – dnyce 2009-07-25 01:03:23