jov*_*van 3 javascript maps google-maps-api-3
我在点击标记时尝试动态更改标记的图标.我在地图上有多个标记(通过数据库查询收集),这是我目前正在使用的代码 - 所有非常标准的东西:
function initialize() {
var myOptions = {
center: new google.maps.LatLng(-30,135),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"),
myOptions);
var bikeicon = "images/bike.png";
<?php
$result=mysql_query("select * from sites");
while($row=mysql_fetch_assoc($result)){
?>
marker = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $row['Latitude']; ?>, <?php echo $row['Longitude']; ?>),
map: map, icon: bikeicon});
infoWindow = new google.maps.InfoWindow();
marker.html="<?php echo stripslashes($row['ShortDesc']); ?>";
google.maps.event.addListener(marker, 'click', function(){
//show infowindow
infoWindow.setContent(this.html);
infoWindow.open(map, this);
//change icon color
var icon = new google.maps.MarkerImage({ url:"http://jovansfreelance.com/bikestats/images/bike_red.png"});
this.setIcon(icon); //why doesn't this work?
})
<?php
}
?>
}
Run Code Online (Sandbox Code Playgroud)
infoWindow代码工作正常,但seticon代码只是使标记消失,并且不显示新的标记图标.新图标网址有效,您可以在浏览器中打开它看到.
所以有人能告诉我为什么这段代码不起作用?
MarkerImage期望url作为第一个参数,而不是包含url的对象.
但是你应该避免使用MarkerImage,它已被弃用了.
您也可以将URL直接传递给setIcon.
可能的方法(都会给出相同的结果):
//use the MarkerImage-object
this.setIcon(icon);
//simply use the url
this.setIcon('http://jovansfreelance.com/bikestats/images/bike_red.png');
//using an google.maps.Icon-object
this.setIcon({url:'http://jovansfreelance.com/bikestats/images/bike_red.png'});