1

当我将此页面加载到 div 中时(使用 jQuery.load()),不显示标记图标。该图标将在重新加载页面后显示。当我将它传递给 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

您正在附加placeMarker到 map.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 回答