我能够在地图上放置标记,但由于我使用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&v=2&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 :(得分:0)
这里有一些问题。
首先,您要包含两个版本的映射API,其中一个版本由于某种原因而转义了参数。这可能是因为它是从其他地方复制的。如果您需要V2 API,则只需包含该API。请注意,该API将于明年退休。
此外,您的标记实例化代码不正确。您应该将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文档所示: