2013-03-19 47 views
0

我想在谷歌地圖添加標記,我有這樣的代碼問題添加標記,谷歌地圖在瀏覽器

<script type="text/javascript" 
    src="https://maps.googleapis.com/maps/api/js?key=myKey&sensor=true"> 
</script> 
<script type="text/javascript"> 
    function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(56.33481154165235, 11.107177734375), 
     zoom: 7, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
    setMarker(); 
    } 

    // Function for adding a marker to the page. 
function addMarker(location) { 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); 
} 

// Testing the addMarker function 
function setMarker() { 
     CentralPark = new google.maps.LatLng(55.671389288295465, 12.5601196289062); 
     addMarker(CentralPark); 
} 


google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

這顯示了地圖,但沒有標記。

在此之前,感謝您的幫助!

回答

0

問題是map是初始化函數中的局部變量,所以它不能從其他函數中獲得。做一個全局變量。

或者將地圖對象作爲參數傳遞給您的setMarker/addMarker函數。

另外我不確定爲什麼你有addMarker和setMarker作爲單獨的函數(除非你打算在後面擴展這些功能,這些功能解釋了你爲什麼要這樣分割它們)。我在這個答案中將它們合併爲一個,儘管從技術上講,您的方法沒有任何問題(這只是非全局性的map這是您的問題)。

試試這個:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=myKey&sensor=true"> 
</script> 
<script> 
    // make this global: 
    var map; 

    function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(56.33481154165235, 11.107177734375), 
     zoom: 7, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
    addMarker(); 
    } 

    // Function for adding a marker to the page. 
function addMarker() { 
    marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(55.671389288295465, 12.5601196289062), 
     map: map 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
+0

謝謝你這段代碼,我會嘗試一下,看看它是否工作。 – ACetin 2013-03-19 12:58:08

+0

爲什麼downvote,無論它是誰? – duncan 2013-04-24 12:27:11

1

嘗試以下

<script type="text/javascript"> 
var marker, 
    CentralPark = new google.maps.LatLng(55.671389288295465, 12.5601196289062); 

function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(56.33481154165235, 11.107177734375), 
     zoom: 7, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 

    marker = new google.maps.Marker({ 
     position: CentralPark, 
     map: map, 
     animation: google.maps.Animation.DROP 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 
</script>