0

我能够在地图上放置标记,但由于我使用的是 GMap2,我无法再在地图上放置标记。我想使用 GMap2,这样我就可以从地址中提取 lat lng。

<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'
 });

4

1 回答 1

0

这里有几个问题。

首先,您包含两个版本的映射 API,其中一个版本由于某种原因已转义参数。这可能是因为它是从其他地方复制的。如果您需要 V2 API,则只需包含该 API。请注意,该 API 将于明年由 Google 停用。

此外,您的标记实例化代码不正确。您应该将 latlng 位置作为第一个参数传递,然后将选项作为对象文字格式的第二个参数传递,例如:

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>

请注意,以上假设地理位置有效。在现实世界的应用程序中,您应该测试错误,如此处的 API 文档所示:

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

于 2012-09-11T13:36:54.897 回答