2013-02-19 2 views
1

Когда я загружаю эту страницу в div (используя jQuery.load()), значок маркера не отображается. После перезагрузки страницы появится значок. Это вызванная карта не инициализируется, когда я передаю ее в placeMarker? Как это решить.Значок маркера не отображается при загрузке jquery

<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> 

ответ

-1

У вас должна быть функция Initialize(), вызванная после вашего успеха load(). Лучше иметь свой javascript на главной странице, а не на загруженной странице. Или вы можете использовать iFrame, самый простой способ.

+0

'iframe'? Объясните подробнее ... AFAIK, карта уже находится в 'iframe', принадлежащем Google ... и вы предлагаете вложенность этого внутри другого? Он просто должен следить за документами и загружать их в правильном порядке. – Sparky

2

Вы прикрепляете placeMarker к map.click слушателю событий.

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

Необходимо загрузить его после отображения карты.

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

jsFiddle См

+0

placeMarker (myLatlng); функция будет выполняться, когда пользователь нажимает на карту, она создаст маркер при щелчке пользователя. myLatlng получит неопределенную ошибку в вашем коде. Или, может, мне не хватает понимания? –

+0

В вопросе 'Когда я загружаю эту страницу в div (используя jQuery.load()), значок маркера не отображается ..... Как его решить.« Мой ответ решает это. Если вы хотите, чтобы маркер показывал, когда пользователь нажимает карту вашего исходного кода, сделайте это. Я тестировал оба кода без ошибок. Какова ваша конкретная проблема ?. –

+0

@MahadiSiregar jsFiddle моего кода добавлен в ответ –

Смежные вопросы