我尝试通过点击div并使用jquery来更改GoogleMap标记图标。但它似乎不起作用,标记图标不会改变。我分配了一个包含图像路径的变量,但问题是如果jquery更改它,它将保留在jquery函数内并且不会传递回全局值。 这是我的代码:
JS部分
$(document).ready(function() {
$('#hurricanes').click(function (e){
iconic=jQuery(this).attr('hurr.png');
initMap();
});
$('#earthquakes').click(function (e){
iconic=jQuery(this).attr('durr.png');
initMap();
});
});
var iconBase = 'img/';
var iconic;
function createMarker(latlng, name, address1, address2, postalCode) {
var marker = new google.maps.Marker({
map: map,
position: latlng,
title: name,
icon: iconBase + iconic
});
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: -0.397,
lng: 10.644
},
zoom: 2,
mapTypeId: google.maps.MapTypeId.TERRAIN,
disableDefaultUI: true
});
displayMarkers();
}
和HTML按钮:
<div id="hurricanes" class="choices">HURRICANES</div>
<div id="earthquakes" class="choices">EARTHQUAKES</div>
答案 0 :(得分:4)
更改标记后,您应该使用JavaScript重新初始化地图。请参阅API参考中的所有选项:https://developers.google.com/maps/documentation/javascript/3.exp/reference
虽然我不太确定您要做什么,但您也可以删除特定坐标中的标记,然后使用新的标记图标添加新标记。
答案 1 :(得分:0)
我通过重新初始化这两个功能找到了解决方案:
$(document).ready(function() {
$('#hurricanes').click(function (e){
iconic='hurr.png';
createMarker();
initMap();
console.log(iconic);
});
$('#earthquakes').click(function (e){
iconic='durr.png';
createMarker();
initMap();
console.log(iconic);
});
});