2013-02-19 2 views
1

jQuery.load()를 사용하여 div에이 페이지를로드하면 마커 아이콘이 표시되지 않습니다. 페이지가 다시로드되면 아이콘이 표시됩니다. 그것이 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()가 있어야합니다. 로드 된 페이지가 아닌 기본 페이지에서 자바 스크립트를 사용하는 것이 좋습니다. 또는 가장 쉬운 방법은 iFrame을 사용할 수 있습니다.

+0

'iframe'를 참조하십시오? 더 설명해주세요 ... AFAIK,지도는 이미 Google 소유의 'iframe'안에 있습니다 ... 다른 하나의 내부에 중첩을 제안 하시겠습니까? 그는 단순히 문서를 읽고 적절한 순서로로드해야합니다. – 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

장소 마커 (myLatlng); 기능은 사용자가지도를 클릭 할 때 실행되며 사용자 클릭시 마커를 만듭니다. myLatlng에서 코드에 대해 정의되지 않은 오류가 발생합니다. 아니면 이해가 안되나요? –

+0

Question'이 페이지를 div에로드하면 (jQuery.load() 사용) 마커 아이콘이 표시되지 않습니다. 어떻게 해결할 수 있습니까? 내 대답은이 문제를 해결합니다. 사용자가 원래 코드를 클릭 할 때 마커를 표시하려면이 작업을 수행하십시오. 두 코드 모두 오류없이 테스트했습니다. 정확한 문제는 무엇입니까?. –

+0

@MahadiSiregar jsFiddle 내 코드의 답변에 추가됨 –

관련 문제