2011-08-04 3 views
0

맞춤식 Google지도를 만들려고했지만 코드를 작성했지만 뭔가 잘못되었습니다. 누구든지 내가 한 짓을 지적 할 수 있는지 궁금해졌습니다. 잘못된. 코드는 여기에 있습니다 : 그것은 잘 작동하는 것 같다여러 마커와 팝업 창이있는 맞춤형 Google지도 만들기 - 문제

<script type="text/javascript"> 
    function initialize() { 
    var myLatlng = new google.maps.LatLng(30,0); 
    var myOptions = { 
     zoom: 2, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
    } 

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    var countries = Array(); 

    countries.push({ 
     marker: new google.maps.Marker({position: new google.maps.LatLng(4.52,115), map: map, title: 'Test'}), 
     infowindow: new google.maps.InfoWindow({content: "Hello world"}) 
    }); 
    countries.push({ 
     marker: new google.maps.Marker({position: new google.maps.LatLng(42.45,23.20), map: map, title: 'Test2'}), 
     infowindow: new google.maps.InfoWindow({content: "Hello world2"}) 
    }); 
    countries.push({ 
     marker: new google.maps.Marker({position: new google.maps.LatLng(12.15,-1.30), map: map, title: 'Test3'}), 
     infowindow: new google.maps.InfoWindow({content: "Hello world3"}) 
    }); 

    for each (var item in countries) { 
     google.maps.event.addListener(item.marker, 'click', function() { 
     item.infowindow.open(map, item.marker); 
     }); 

} 

+1

_You_은 옳지 않다 무엇 _us_ 말할 필요가있다. –

+0

지도가로드되지 않으므로지도가 있어야하는 공백 영역이 생깁니다 – Nick

+1

['each'를 사용하여 'Array'를 반복하지 마십시오.] (https://developer.mozilla.org /en/JavaScript/Reference/Statements/for...in#Description) 일반적인'for' 루프를 사용하십시오. –

답변

0

using the wrong style for loop을 제외하면 make a function in a loop입니다. 이것은 매우 흔한 실수입니다. JS에는 블록 수준이 아닌 기능 수준 범위 지정이 있으므로 예상대로 작동하지 않습니다.

이 시도 :

function makeCallback(country) { 
    return function() { 
     country.infowindow.open(map, country.marker); 
    }; 
} 

var item; 
for (var i=0; i<countries.length; i++) { 
    item = countries[i]; 
    google.maps.event.addListener(item.marker, 'click', makeCallback(item)); 
} 
+0

감사합니다. Matt, 지금 모두 정렬되었습니다. :) – Nick

0

, 내가 3 개 마커 그러나 문제는 그것이 말하기 어렵다 무엇인지 모르고지도를 참조하십시오.

몇 가지 추측은 :

  • 당신은 당신이 "map_canvas"의 ID로 사업부가 있습니까
  • 를 초기화 닫 끝에 중괄호를 놓치고있어?
  • 초기화는 어디서나 호출됩니까?
  • Google지도 자바 스크립트를 포함 시켰습니까?
+0

문제는지도가 표시되지 않고 이상하게 작동한다는 것이고 재검토합니다. 감사합니다! – Nick

+0

흠 아직도 나를 위해 일하고 싶지 않다, 나는 끝에 곱슬 괄호가있다, 나는 올바른 ID를 가진 div (div가 표시되고 있지만 완전히 흰색이다. JS (), 더 많은 아이디어? 감사! – Nick

+0

http://pastebin.com/Jn74kdme 여기 작동해야하는 매우 거친 모형이 있습니까? 위에서 언급 한 매트 (Matt)는 규칙적인 for 루프를 사용하는 것이 옳다. – Mark

관련 문제