2009-07-24 105 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