0

私はstackoverflowと残りのWebを無駄に検索してきました。私は初心者のプログラマーで、この問題に完全に行き詰まっています。

次のような構造の配列があります。

住所A 郊外A 住所B 郊外B

次のコードを実行すると、マーカーを配置してマップを更新し、そのマーカーの周りに 10 マイルの円を描きます。問題は、マウスをマーカーの上に置くと、マーカーと円が正しい位置にあるにもかかわらず、ツールチップ/タイトルが常に SuburbB のものになることです。

私を夢中にさせて、助けていただければ幸いです!

 function codeAddress(){

    var arrayLength = array.length;
    var looper = 0;
    var looper2 = 1;

    while (looper < arrayLength) {

        alert("Geocode started");

        sAddress = array[looper];
            alert (looper)
            alert("Address set" + sAddress)

        sName = array[looper2];
            alert (looper2)
            alert("Name set" + sName)

        geocoder.geocode( {'address': sAddress}, function(results, status) {

            alert("Make marker");

            if (status == google.maps.GeocoderStatus.OK) {

                map.setCenter (results[0].geometry.location);

                var marker2 = new google.maps.Marker({
                    map: map,
                    title: sName,
                    position: results[0].geometry.location
                });

                var circle = new google.maps.Circle({
                    map: map,
                    radius: 16093,    // 10 miles in metres
                    fillColor: '#AA0000',
                    strokeWeight: 2,
                    strokeOpacity: 0.5 
                   });

                circle.bindTo('center', marker2, 'position');



        }    else {

                alert("Geocode was not successful for the following reason: " + status);

            }
        })

        looper = looper + 2;
        looper2 = looper2 + 2;
    }
}
4

1 に答える 1

0

悪名高い Javascript ループの問題が発生しています。Javascipt のスコープはブロック レベルではなく関数レベルであるため、混乱する可能性があります: http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/。基本的に、次の行:

geocoder.geocode( {'address': sAddress}, function(results, status) {

ジオコードごとに配列の最後の項目が設定されており、最初のパラメーターをクロージャーでラップする必要があります。

geocoder.geocode( (function () { return {'address': sAddress} })(), function(results, status) {

マーカーと円は、関数内で定義されているため問題ありません。

于 2013-03-12T06:22:41.400 に答える