在data.feature对象上添加工具提示,就像我们可以为标记做的那样

时间:2014-09-11 12:30:26

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

我在Google Maps API项目上工作,我想在指针悬停在功能上时显示工具提示。使用标记时非常容易:你只需要提供一个"标题"在标记的选项中{see this exemple)但我使用的是data.feature对象,而我却找不到如何做到这一点?

我会继续为data.feature对象工作,因为它更容易管理不同的图层。

function elemOver(event){
    console.log(event.feature.getProperty("Libelle")); // I put a console.log to test the listener but I don't know how to do to add a tooltip
};

function elemOut(event){
    console.log (event.feature.getProperty("Libelle")," out"); // I put a console.log to test the listener but I don't know how to do to add a tooltip
};

data = new google.maps.Data();
data.loadGeoJson('layer.geojson');
data.setMap(map);
data.addListener('mouseover',elemOver);
data.addListener('mouseout',elemOut);

您可以在此处查看我的作品:http://bescu.github.io/GoogleMapsApiTest/

谢谢,

马克西姆

2 个答案:

答案 0 :(得分:3)

setStyle与函数作为参数使用:

当您使用函数作为参数时,您可以根据要素的属性设置样式(例如title)(例如Libelle

   map.data.setStyle(function(feature){
    return {
      title:feature.getProperty('Libelle')||null
      //more styles    
    };
 });

演示: http://jsfiddle.net/doktormolle/L58aprhf/

答案 1 :(得分:2)

由于title属性仅适用于点类型功能,因此对多边形等内容没有帮助。

因此,当用户点击多边形时,我使用InfoWindow来显示类似的工具提示类型标签:

    map.data.addListener('click', function (event) {
    if (areaInfoWindow != null) {
        areaInfoWindow.close();
        areaInfoWindow = null;
    }
    areaInfoWindow = new google.maps.InfoWindow({
        content: event.feature.getProperty('name'),
        position: event.latLng
    });
    areaInfoWindow.open(map);
});

这可以相对容易地修改,以分别显示和隐藏mouseovermouseout事件的信息窗口,虽然我不太确定它会看起来那么棒......

我想您也可以不使用InfoWindow,而是使用其他一些自定义HTML元素 - 自定义DIV? - 而不是。