Google API V3을 처음 사용합니다. Zoom on Icon 이벤트를 변경하고 싶습니다. 전체 코드가 예상대로 실행 중입니다.지도 변경 이벤트가 줌의 변경을 캡처하여 아이콘에서 Google 표준 빨간색 아이콘으로 변경할 수있는 마지막 비트입니다. 검토하고 제안 사항을 수정하십시오. 정말 고마워요.변경 이벤트가 발생하면 Google지도에서 다른 아이콘을 가져올 수 없습니다.
<script type="text/javascript" src="util.js"></script>
<script type="text/javascript">
var infowindow;
var map;
function initialize() {
var myLatlng = new google.maps.LatLng(20, 0);
var myOptions = {
zoom: 3,
panControl:true,
zoomControl:true,
mapTypeControl:true,
scaleControl:true,
streetViewControl:true,
overviewMapControl:true,
rotateControl:true,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
downloadUrl("worldcities.xml", function(data) {
var markers = data.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var circleOptions = {
strokeColor: '#FF0000',
strokeOpacity: 0.65,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.25,
map: map,
center: latlng,
radius: parseInt(markers[i].getAttribute("population"))/25
};
var marker = createMarker(markers[i].getAttribute("name"), latlng, markers[i].getAttribute("population"), markers[i].getAttribute("countrycode"), markers[i].getAttribute("region"));
var onekmcircle = new google.maps.Circle(circleOptions);
}
});
}
function createMarker(name, latlng, popl, cntry, rgon) {
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 2
},
title: name});
var contentstring = '<b>'+name+'</b>'+'<br>Population: '+popl+'<br>Country: '+cntry+'<br>Region: '+rgon;
google.maps.event.addListener(marker, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content: contentstring});
infowindow.open(map, marker);
var zoomLevel = map.getZoom();
map.setCenter(marker.getPosition());
if (zoomLevel<6)
{
map.setZoom(6);
}
});
return marker;
}
google.maps.event.addListener(map, 'zoom_changed', function() {
var url ='http://maps.google.com/mapfiles/ms/icons/red-dot.png';
var icon = google.maps.MarkerImage(url);
var currentZoom = map.getZoom();
if (currentZoom >9){
for(i=0; i< markers.length; i++) {
markers[i].setIcon(icon);
}
}
});
문제가 정확히 무엇입니까? 바이올린이 도움이 될 것입니다. – Villarrealized
문제가 마지막 변경 이벤트에 있습니다.지도를 9 단계 이상의 확대/축소 레벨로 변경하면 아이콘이 red-dot.png로 변경되지 않습니다. 따라서 다음 코드 스 니펫을 검토하십시오. - google.maps.event.addListener (map, 'zoom_changed', function() { var url = 'http : //maps.google.com/mapfiles/ms/icons/red- dot.png '; VAR 아이콘 = google.maps.MarkerImage (URL) VAR currentZoom map.getZoom =(); (currentZoom> 9) {(I = 0 경우는 i가
mapsandlocations
http://www.mapsandlocations.com/google/worldcities.htm에 스크립트를 업로드했으며 더 큰 확대/축소 수준에서 아이콘 변경이 발생하지 않도록 확대 할 수 있습니다. 그래서 실행되지 않는 코드 시퀀스를 찾는데 도와주세요. 감사합니다. – mapsandlocations