0

質問があります。onclickマーカーで関数を取得する方法を探していました。このマーカーは、Position配列によって作成されます。しかし、それは関数を作成しないようでonclickあり、それが機能する場合は、最後に作成されたマーカーでのみ機能します。

助けてくれますか ?

これは配列です

var POIArrayVisited = new Array(
    new Array(52.3764, 4.90245, "De Schreierstoren", "POIone"),
    new Array(52.3727, 4.90036, "De Waag", "POItwo"),
    new Array(52.3737, 4.90012, "Het Zustersklooster", "POIthree"), 
    new Array(52.3750, 4.89939, "Onze lieve heer op solder", "POIfour"), 
    new Array(52.3741, 4.89808, "Belle het standbeeld", "POIfive"));

次に、マーカーを作成します。

// voer de coordinaten van de niet bezochte poi in
// zet markers voor elk POI

var i = 0;
for (i = 0; i < POIArrayVisited.length; i++) {
    var markerLatlng = new google.maps.LatLng(
                    POIArrayVisited[i][0], POIArrayVisited[i][1])
    // Place a hit marker
    markerVisited = new google.maps.Marker({
        position: markerLatlng,
        map: map,
        icon: imageMarkerOld,
        title: POIArrayVisited[i][2]
    });
}

onclick次に、マーカーを作成します。

// For every POI
var i;
for (i = 0; i < POIArrayVisited.length; i++) {
    var POIlinkVisited = POIArrayVisited[i][3];
    var OpenPOI = POIlinkVisited;
    google.maps.event.addListener(markerVisited, "click", function() {
        //link and update cookie
        document.cookie = "OpenPOI" + "=" + OpenPOI;
        window.location.href = "poi.php";
    });

}

間違っていることがわからない

4

2 に答える 2

1

配列を使用し、リンクまたはIDを使用して、他のページで開く必要があるものを定義する場合は、これを使用できます。

Lat and Long次に、使用するタイトルと値のID。

    var POIArrayVisited = new Array(        new Array(52.3764, 4.90245, "De Schreierstoren", "POIone"),
                                            new Array(52.3727, 4.90036, "De Waag", "POItwo"),
                                            new Array(52.3737, 4.90012, "Het Zustersklooster", "POIthree"),
                                            new Array(52.3750, 4.89939, "Onze lieve heer op solder", "POIfour"),
                                            new Array(52.3741, 4.89808, "Belle het standbeeld", "POIfive")
);

このようにして、このコードを使用してCookieを作成できます

// voer de coordinaten van de niet bezochte poi in
                // zet markers voor elk POI
                var i=0;
                for (i=0;i<POIArrayVisited.length;i++) {
                    var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1])
                    // Place a hit marker
                    markerVisited = new google.maps.Marker({
                        position:  markerLatlng,
                        map: map,
                        icon: imageMarkerOld,
                        title: POIArrayVisited[i][2],
                        html: POIArrayVisited[i][3]
                    });
                    var OpenPOIVisited = POIArrayVisited[i][3];
                        google.maps.event.addListener(markerVisited, "click", function() {
                            //link and update cookie
                            document.cookie = "OpenPOI"+"="+this.html;
                            window.location.href = "poi.php";
                    });
                }

これを使用すると、PHPのIDとして使用できます

                    // voer de coordinaten van de niet bezochte poi in
                // zet markers voor elk POI
                var i=0;
                for (i=0;i<POIArrayVisited.length;i++) {
                    var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1])
                    // Place a hit marker
                    markerVisited = new google.maps.Marker({
                        position:  markerLatlng,
                        map: map,
                        icon: imageMarkerOld,
                        title: POIArrayVisited[i][2],
                        html: POIArrayVisited[i][3]
                    });
                    var OpenPOIVisited = POIArrayVisited[i][3];
                        google.maps.event.addListener(markerVisited, "click", function() {
                            //link and update cookie
                            window.location.href = "poi.php?id="+this.html;
                    });
                }

または、HTMLページを参照しますか

                // voer de coordinaten van de niet bezochte poi in
                // zet markers voor elk POI
                var i=0;
                for (i=0;i<POIArrayVisited.length;i++) {
                    var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1])
                    // Place a hit marker
                    markerVisited = new google.maps.Marker({
                        position:  markerLatlng,
                        map: map,
                        icon: imageMarkerOld,
                        title: POIArrayVisited[i][2],
                        html: POIArrayVisited[i][3]
                    });
                    var OpenPOIVisited = POIArrayVisited[i][3];
                        google.maps.event.addListener(markerVisited, "click", function() {
                            //link and update cookie
                            window.location.href = +this.html".html";
                    });

助けてくれてありがとう!! = D

于 2011-10-11T11:06:56.383 に答える
0

あなたのコードでは:

// For every POI
var i;
for (i = 0; i < POIArrayVisited.length; i++) {
    var POIlinkVisited = POIArrayVisited[i][3];
    var OpenPOI = POIlinkVisited;
    google.maps.event.addListener(markerVisited, "click", function() {
        //link and update cookie
        document.cookie = "OpenPOI" + "=" + OpenPOI;
        window.location.href = "poi.php";
    });

}

の新しいインスタンスはどこで入手できますmarkerVisitedか?あなたが投稿したコードスニペットで私が見る限り、あなたは循環してPOIArrayVisitedいますが、あなたはの新しいインスタンスを取得していませんmarkerVisited。これが、クリック時にLASTマーカーのみが実際に応答する理由である可能性があります。

次のようなものである必要があります。

for (var i = 0; i < POIArrayVisited.length; i++) {
    var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0], POIArrayVisited[i][1]);
    // Place a hit marker
    var markerVisited = new google.maps.Marker({
        position: markerLatlng,
        map: map,
        icon: imageMarkerOld,
        title: POIArrayVisited[i][2]
    });

    google.maps.event.addListener(markerVisited, "click", function() {
            //link and update cookie
            document.cookie = "OpenPOI" + "=" + OpenPOI;
            window.location.href = "poi.php";
        });

}
于 2011-10-10T17:58:32.987 に答える