我的自定义infoWindow是不必要的复杂?

时间:2012-01-25 09:18:21

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

发现这种将DIV作为自定义谷歌地图infoWindow的方法。它有效,但感觉有点hacky ..有更简单的方法吗?

a)设置叠加层

MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.draw = function() {}
overlay = new MyOverlay(this.map);

function MyOverlay(map) { this.setMap(map); }

b)点击每个标记上的监听器

    google.maps.event.addListener(markers[i], 'click', function() {
        displayInfo(this);
    });

c)显示infoWindow功能

function displayInfo(marker) {

 var e = $('#infobox');

overlay.getPanes().floatPane.appendChild(e);

//important! Removes already active listeners.
if(displayInfoProcess) {google.maps.event.removeListener(displayInfoProcess);}

displayInfoProcess = google.maps.event.addListener(map, 'bounds_changed', function() {

    show('#infobox');

    var markerOffset = overlay.getProjection().fromLatLngToDivPixel(marker.position);

    e.style.top = markerOffset.y - 115 + 'px';
    e.style.left = markerOffset.x - 57 + 'px';

    e.innerHTML = marker.store + '<br><em>' +marker.distance;

});
map.panTo(marker.position);
}

1 个答案:

答案 0 :(得分:0)

似乎“没关系。”以下是Google代码网站的示例:

http://gmaps-samples-v3.googlecode.com/svn/trunk/infowindow_custom/infowindow-custom.html

看看来源。