2

このグーグルマップで見つけたコードは正常に機能しているようですが、マップをロードしたときに最初のマーカーが表示されません。マップは最初の場所の中心にありますが、マーカーはありません。私はphpを使用して最初のLatとLonを設定しています。また、新しい場所にドラッグした後で古いマーカーを削除する方法はありますか?

 // global "map" variable
        var map = null;
        var marker = null;

        // popup window for pin, if in use
        var infowindow = new google.maps.InfoWindow({ 
            size: new google.maps.Size(150,50)
            });

        // A function to create the marker and set up the event window function 
        function createMarker(latlng, name, html) {

        var contentString = html;

        var marker = new google.maps.Marker({
            position: latlng,
            map: map,
            zIndex: Math.round(latlng.lat()*-100000)<<5
            });

        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(contentString); 
            infowindow.open(map,marker);
            });

        google.maps.event.trigger(marker, 'click');    
        return marker;

    }

    function initialize() {

        // the location of the initial pin
        var myLatlng = new google.maps.LatLng(<?=$a1[lat]?>,<?=$a1[lon]?>);

        // create the map
        var myOptions = {
            zoom: 12,
            center: myLatlng,
            mapTypeControl: true,
            mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
            navigationControl: true,
            mapTypeId: google.maps.MapTypeId.SATELLITE
        }
    var myMarker = new google.maps.Marker({
        position: new google.maps.LatLng(<?=$a1[lat]?>, <?=$a1[lon]?>),
        draggable: true
    });

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

        // establish the initial marker/pin
        var myMarker = new google.maps.Marker({
        position: new google.maps.LatLng(<?=$a1[lat]?>, <?=$a1[lon]?>),
        draggable: true
    });

        // establish the initial div form fields
        formlat = document.getElementById("latbox").value = myLatlng.lat();
        formlng = document.getElementById("lngbox").value = myLatlng.lng();

        // close popup window
        google.maps.event.addListener(map, 'click', function() {
            infowindow.close();
            });

        // removing old markers/pins
        google.maps.event.addListener(map, 'click', function(event) {
            //call function to create marker
             if (marker) {
                marker.setMap(null);
                marker = null;
             }

            // Information for popup window if you so chose to have one

             marker = createMarker(event.latLng, "name", "<font color=#660000><b><?=$a1[name]?></b><br>"+event.latLng);


            var image = '/images/googlepins/pin2.png';
            var myLatLng = event.latLng ;

            /*  
            var marker = new google.maps.Marker({
                by removing the 'var' subsquent pin placement removes the old pin icon
            */

            marker = new google.maps.Marker({   
                position: myLatLng,
                map: map,
                icon: image,
                title:"Property Location"
            });

            // populate the form fields with lat & lng 
            formlat = document.getElementById("latbox").value = event.latLng.lat();
            formlng = document.getElementById("lngbox").value = event.latLng.lng();

        });

    }
    //]]>
4

1 に答える 1

3

マップ タグを追加する必要がありました。私は誰かに助けてもらいましたが、彼の答えがさらに問題を引き起こしたとき、彼は彼の答えを削除し、私の質問に反対票を投じました.... バディに感謝します.. Map-Option が必要な場所はここにあります。

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

        // establish the initial marker/pin
        var myMarker = new google.maps.Marker({
        position: new google.maps.LatLng(<?=$a1[lat]?>, <?=$a1[lon]?>),
        map: map, /// <-------This is what I added and seems to have fixed my problem
        draggable: true,

    });
于 2013-02-18T08:09:45.773 に答える