1

このページを (jQuery.load() を使用して) div にロードすると、マーカー アイコンが表示されません。ページをリロードするとアイコンが表示されます。placeMarker 関数にマップを渡すと、マップが初期化されませんか? それを解決する方法。

<script type="text/javascript">

var map;
var markers = new Array();      
var marker;

var infoWindow = new google.maps.InfoWindow();
function initialize() {
    var myLatlng = new google.maps.LatLng(-6.19605333333333,106.79684);
    var myOptions = {
            zoom: 8,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
        fillPositionForm(event.latLng);
    }); 
}

function placeMarker(location) {
    if ( marker ) {
        marker.setPosition(location);
    } else {
        marker = new google.maps.Marker({
            position: location,
            map: map,
            animation: google.maps.Animation.DROP,
            draggable: true
        });
    }
    google.maps.event.addListener(marker, 'dragend', function(event) {
        clearOverlays();
        fillPositionForm(event.latLng);
    });
}

function fillPositionForm(location){            
    jQuery("#latitude").val(location.lat());
    jQuery("#longitude").val(location.lng());
}

function clearOverlays() {
    if (markers) {
        for (i in markers) {
            markers[i].setMap(null);
        }
    }
}

jQuery(document).ready(function() { 
    initialize();
    jQuery("#frmAddPoi").validate({
        messages: {
            latitude: "Please click on map to select poi center position",
            longitude: "Please click on map to select poi center position",
        },
        submitHandler: function(form) {
            return postForm(form, "savepoi", "listcustopoi", false, false);
        }
    });
});
</script>
<div id="map_canvas" class="widgettitle" style="height:240px;"></div>
4

2 に答える 2

2

placeMarkermap.click イベントリスナーにアタッチしています。

google.maps.event.addListener(map, 'click', function(event) {
    placeMarker(event.latLng);
    fillPositionForm(event.latLng);
}); 

map が呼び出された後にロードする必要があります。

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

jsFiddleを参照してください

于 2013-02-19T12:06:44.510 に答える
-1

load() が成功した後、関数 Initialize() を呼び出す必要があります。読み込まれたページではなく、メイン ページに JavaScript を配置することをお勧めします。または、最も簡単な方法で iFrame を使用することもできます。

于 2013-02-19T08:37:00.627 に答える