Javascript 删除/禁用google.maps.Data类中功能子集上的事件侦听器
我正在尝试更改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
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
}
正是我想要的。非常感谢。