2012-09-10 169 views
0

我能夠在地圖上放置標記,但由於我使用的是GMap2,因此我無法在地圖上放置標記。我想使用GMap2,所以我可以從地址中取出經緯度。marker不會在google地圖上顯示

<script src="https://maps.googleapis.com/maps/api/js?sensor=true"></script> 
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=AIzaSyDrwris-0kRdY16oIQoGc_1qsdOgHbJrXo" 
    type="text/javascript"></script> 

<script type="text/javascript"> 
    var map = new GMap2(document.getElementById("chart")); 
    map.setUIToDefault(); 

    navigator.geolocation.getCurrentPosition(function(position) { 
    var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 
    map.setCenter(pos, 14); 

    //until now it works fine, but when I add a marker it does nothing 

var marker = new GMarker({ 
    position: new GLatLng(52.15664,5.40567), 
    map: map, 
    title: 'NAME' 
}); 

+0

你試過map.addOverlay(標記):在實際應用中,你應該對錯誤的API文檔在這裏所示的測試?您可能還想檢查標記的座標是否位於可見地圖內 - 您可以使用map.getBounds()來確定。 –

+0

addOverlay似乎可以工作,但即使在放大/縮小時,它現在仍然在左上角靜止。 getBounds似乎沒有做任何事情 –

+0

getBounds本身不會做任何事情。您需要使用getBounds的結果(例如console.log)來查看標記的座標是否在這些範圍內。 –

回答

0

這裏有幾個問題。首先,您將包含兩個版本的映射API,其中一個由於某種原因已經轉義了參數。這可能是因爲它是從其他地方複製的。如果你需要V2 API,你只需要包含那個。請注意,該API將於明年由Google退休。

此外,您的標記實例化代碼不正確。你應該通過經緯度位置作爲第一個參數,然後選擇在目標文字格式第二,例如:

var marker = new GMarker(new GLatLng(<coord>, <coord>), { title:"My Title" }); 

最後,您不添加標記本身的地圖。你使用addOverlay的方法來解決這個問題。

這裏有一個工作的解決方案。按「添加標記」按鈕以隨機位置到地圖添加標記:

<html> 
<head><title>Map Test</title> 
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true" type="text/javascript"></script> 

<script type="text/javascript"> 
var map; 
function initmap() { 
    map = new GMap2(document.getElementById("chart")); 
    map.setUIToDefault(); 

    navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 
     map.setCenter(pos, 14); 
    }); 
} 

function AddMarker() { 
    var bounds = map.getBounds(); 
    var southWest = bounds.getSouthWest(); 
    var northEast = bounds.getNorthEast(); 
    var lngSpan = northEast.lng() - southWest.lng(); 
    var latSpan = northEast.lat() - southWest.lat(); 
    var point = new GLatLng(southWest.lat() + latSpan * Math.random(), 
          southWest.lng() + lngSpan * Math.random()); 
    map.addOverlay(new GMarker(point, { title:"My Marker" })); 
} 

</script> 
</head> 
<body onload="initmap()"> 
    <div style="width:300px;height:300px" id="chart"></div> 
    <input type="button" onclick="AddMarker();" value="Add Marker"></input> 
</body> 
</html> 

注意的是,上述假設地理位置作品。

https://developers.google.com/maps/articles/geolocation

+0

謝謝!我只改變了這個「map.addOverlay(new GMarker(point,{title:」My Marker「}));」現在它完全有效:) –