Google Maps API v3折线标签为InfoWindow

时间:2013-04-23 01:41:58

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

我在为标记路径显示标签信息窗口方面遇到了一些困难。我跟着this tutorial

我有一个带折线的KML图层(它们曲线 - 代表地形特征) 并且不知道在单击路径时如何显示信息窗口。我已经看过一些关于计算中点的教程(但是直线)..

两种方式(很多)我试图获得路径点:

var streamPoly = google.maps.Polyline.prototype.getPosition = function() {
return this.getPath().getAt(0);}

var streamPoly = poly.getPath(); 

标题中有什么:

var map;
var streamPoly;

function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(42.687984,-79.394159);

    var mapOptions = {
        zoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    var ctaLayer = new google.maps.KmlLayer({
        url: 'paths.kml'
    });
    ctaLayer.setMap(map);
    ctaLayer.set('preserveViewport', true); 


    var  infoBubble = new InfoBubble({
        maxWidth: 300
    });

    var div = document.createElement('DIV');
    div.innerHTML = 'Hello';

    infoBubble.addTab('Tab 1', div);
    infoBubble.addTab('Tab 2', "<B>This is tab 2</B>");

    google.maps.event.addListener(streamPoly, 'click', function() {
        if (!infoBubble.isOpen()) {
            infoBubble.open(map, streamPoly);
        }
    });
}

google.maps.event.addDomListener(window, 'load', initialize);

1 个答案:

答案 0 :(得分:0)

您无法将KmlLayer中的折线作为google.maps.Polyline对象访问。要在KmlLayer上打开InfoWindow(或InfoBubble),您需要向KmlLayer添加一个监听器:

google.maps.event.addListener(ctaLayer, 'click', function(evt) {
        if (!infoBubble.isOpen()) {
            infoBubble.setPosition(evt.latLng);
            infoBubble.open(map);
        }
    });

evt将是KmlLayerMouseEvent,其中包含有关所点击功能的信息