Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除/禁用google.maps.Data类中功能子集上的事件侦听器_Javascript_Google Maps Api 3_Mouseevent_Geojson - Fatal编程技术网

Javascript 删除/禁用google.maps.Data类中功能子集上的事件侦听器

Javascript 删除/禁用google.maps.Data类中功能子集上的事件侦听器,javascript,google-maps-api-3,mouseevent,geojson,Javascript,Google Maps Api 3,Mouseevent,Geojson,我正在尝试更改google.maps.Data类中某个功能的图标表示形式,以便在单击某个功能后,新图标会一直保留,直到单击另一个功能为止。所有这些功能都将保持mouseover和mouseout事件侦听器在其余功能中处于活动状态 我已经实现了所有功能,但使单击的功能图标保持为wx_click.png一旦我将鼠标移离它,样式将恢复(根据代码)。我不想删除任何其他功能的mouseout或mouseover侦听器,只想删除已单击的侦听器 /* ~~ Mouseover listener ~~ */ m

我正在尝试更改google.maps.Data类中某个功能的图标表示形式,以便在单击某个功能后,新图标会一直保留,直到单击另一个功能为止。所有这些功能都将保持
mouseover
mouseout
事件侦听器在其余功能中处于活动状态

我已经实现了所有功能,但使单击的功能图标保持为
wx_click.png
一旦我将鼠标移离它,样式将恢复(根据代码)。我不想删除任何其他功能的
mouseout
mouseover
侦听器,只想删除已单击的侦听器

/* ~~ Mouseover listener ~~ */
map.data.addListener('mouseover', function(event) {
    map.data.revertStyle();
    map.data.overrideStyle(event.feature, {
        icon: '/img/wx_mo.png', 
        title: 'weather station',
    })
});

/* ~~ Mouseout listener ~~*/
mouseoutEventListener = map.data.addListener('mouseout', function(event) {
    map.data.revertStyle();
});

/* ~~ Click listener ~~ */
map.data.addListener('click', function(event) {

    map.data.overrideStyle(event.feature, {icon: '/img/wx_click.png'});

// do other stuff
});

在单击处理程序中:

将单击的标记存储在变量中。 当此变量不等于单击的特征时,恢复存储特征的样式

/* ~~ Mouseover listener ~~ */
map.data.addListener('mouseover', function(event) {
    if(map.get('activeFeature')!=event.feature ){
    map.data.overrideStyle(event.feature, {
        icon: '/img/wx_mo.png'
    });
    }
});

/* ~~ Mouseout listener ~~*/
mouseoutEventListener = map.data.addListener('mouseout', function(event) {
    if(map.get('activeFeature')!=event.feature ){
      map.data.revertStyle(event.feature);
    }
});

/* ~~ Click listener ~~ */
map.data.addListener('click', function(event) {
    var activeFeature=map.get('activeFeature');
    if(activeFeature && activeFeature!=event.feature ){
      map.data.revertStyle(activeFeature);
    }
    map.set('activeFeature',event.feature);
    map.data.overrideStyle(event.feature, {
      icon: '/img/wx_click.png'
    });

// do other stuff
});
在mouseover/mouseout处理程序中:

仅当当前功能不等于存储的功能时,才更改图标/还原当前功能的样式

/* ~~ Mouseover listener ~~ */
map.data.addListener('mouseover', function(event) {
    if(map.get('activeFeature')!=event.feature ){
    map.data.overrideStyle(event.feature, {
        icon: '/img/wx_mo.png'
    });
    }
});

/* ~~ Mouseout listener ~~*/
mouseoutEventListener = map.data.addListener('mouseout', function(event) {
    if(map.get('activeFeature')!=event.feature ){
      map.data.revertStyle(event.feature);
    }
});

/* ~~ Click listener ~~ */
map.data.addListener('click', function(event) {
    var activeFeature=map.get('activeFeature');
    if(activeFeature && activeFeature!=event.feature ){
      map.data.revertStyle(activeFeature);
    }
    map.set('activeFeature',event.feature);
    map.data.overrideStyle(event.feature, {
      icon: '/img/wx_click.png'
    });

// do other stuff
});

演示:

函数初始化(){
map=new google.maps.map(document.getElementById('map-canvas'){
缩放:6,
中心:{
纬度:0,
液化天然气:0
}
});
map.data.setStyle({
图标:'http://maps.gstatic.com/mapfiles/markers2/marker.png'
});
/*~~鼠标悬停侦听器~~*/
map.data.addListener('mouseover',函数(事件){
if(map.get('activeFeature')!=event.feature){
map.data.overrideStyle(event.feature{
图标:'http://maps.gstatic.com/mapfiles/markers2/icon_green.png'
});
}
});
/*~Mouseout侦听器~~*/
mouseoutEventListener=map.data.addListener('mouseout',函数(事件){
if(map.get('activeFeature')!=event.feature){
map.data.revertStyle(event.feature);
}
});
/*~~单击侦听器~*/
map.data.addListener('click',函数(事件){
var activeFeature=map.get('activeFeature');
if(activeFeature&&activeFeature!=event.feature){
map.data.revertStyle(activeFeature);
}
map.set('activeFeature',event.feature);
map.data.overrideStyle(event.feature{
图标:'http://maps.gstatic.com/mapfiles/markers2/boost-marker-mapview.png'
});
//做其他事情
});
//加载GeoJSON。
map.data.addGeoJson({
“类型”:“FeatureCollection”,
“特点”:[{
“类型”:“功能”,
“几何学”:{
“类型”:“点”,
“坐标”:[0,0]
}
}, {
“类型”:“功能”,
“几何学”:{
“类型”:“点”,
“坐标”:[1,1]
}
}, {
“类型”:“功能”,
“几何学”:{
“类型”:“点”,
“坐标”:[-1,-1]
}
}]
});
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体,
#地图画布{
身高:100%;
边际:0px;
填充:0px
}

正是我想要的。非常感谢。