谷歌地图在鼠标悬停时改变标记图形
Google Maps change marker graphic on mouseover
有人能帮我弄清楚为什么我下面的代码不能改变鼠标悬停上的标记图形?我有记号笔。在每个mouseover/mouseout函数中使用setIcon,但它似乎不起作用。
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var marker, i;
var id = 'sites';
for (i = 0; i < locations_beer.length; i++) {
var id = 'sites' + i;
var contentString = '<div class="beer-map-popup">'+ locations_beer[i][0] +'<br /><img src="_img/beer-map-popup-wheat.png" border="0" /></div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations_beer[i][1], locations_beer[i][2]),
map: map
,id: id
,icon: 'http://www.ashtonbrewingcompany.com/_img/beermap-pin.png'
,url: locations_beer[i][4]
,zIndex:100
});
var icon1 = "http://www.ashtonbrewingcompany.com/_img/beermap-pin-active.png";
var icon2 = "http://www.ashtonbrewingcompany.com/_img/beermap-pin.png";
(function(infowindow) {
google.maps.event.addListener(marker, 'mouseover', function() {
infowindow.open(map, this);
marker.setIcon("http://www.ashtonbrewingcompany.com/_img/beermap-pin-active.png");
});
google.maps.event.addListener(marker, 'mouseout', function() {
infowindow.close();
marker.setIcon("http://www.ashtonbrewingcompany.com/_img/beermap-pin.png");
});
})(infowindow);
}
您的mouseover/mouseout侦听器中没有marker
的函数闭包。mouseover/mouseout侦听器函数中的this
是标记。一种选择是将代码更改为使用this.setIcon(...)
而不是marker.setIcon(...)
。
概念验证
代码片段:
function initialize() {
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var marker, i;
var id = 'sites';
var bounds = new google.maps.LatLngBounds();
for (i = 0; i < locations_beer.length; i++) {
var id = 'sites' + i;
var contentString = '<div class="beer-map-popup">' + locations_beer[i][0] + '<br /><img src="_img/beer-map-popup-wheat.png" border="0" /></div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations_beer[i][1], locations_beer[i][2]),
map: map,
id: id,
icon: 'http://www.ashtonbrewingcompany.com/_img/beermap-pin.png',
url: locations_beer[i][4],
zIndex: 100
});
bounds.extend(marker.getPosition());
var icon1 = "http://www.ashtonbrewingcompany.com/_img/beermap-pin-active.png";
var icon2 = "http://www.ashtonbrewingcompany.com/_img/beermap-pin.png";
(function(infowindow) {
google.maps.event.addListener(marker, 'mouseover', function() {
infowindow.open(map, this);
this.setIcon("http://www.ashtonbrewingcompany.com/_img/beermap-pin-active.png");
});
google.maps.event.addListener(marker, 'mouseout', function() {
infowindow.close();
this.setIcon("http://www.ashtonbrewingcompany.com/_img/beermap-pin.png");
});
})(infowindow);
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, "load", initialize);
var mapOptions = {};
var locations_beer = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
html,
body,
#map-canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map-canvas"></div>
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 有没有一个javascript图形绘制库可以进行气球树布局
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 如何在d3上的图形中添加放大和缩小按钮
- 如何在React Native中绘制图形
- 为什么使用immutableJS我的状态没有改变
- JavaScript改变了双方的显示风格
- 改变所有<td>为特定的桌子点击颜色
- 变量dos'即使我可以返回更新后的值,也不会改变
- jQuery更改变量值
- 爆米花改变来源
- 删除图形和数字之间的连字符(-)符号
- ChartJS根据下拉选择改变图形
- 如何动态地改变图形上的标签?
- 是否有可能改变现有图形的节点/链接的属性?比如我想改变链接/节点的颜色
- 如何在图形中动态地改变背景颜色,变成两种不同的颜色
- 谷歌地图在鼠标悬停时改变标记图形
- 如何改变网页内容,而不删除任何样式/css/图形
- 如何在create js中改变图形的填充颜色
- 当改变图形类型时,强制Highcharts重新绘制动画