创建地图之后,基本上都需要标记位置的,就是那个圆点。然后参考谷歌的API,找了许久,网址:
https://developers.google.com...
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Accessing arguments in UI events</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {
lat: -25.363882,
lng: 131.044922
}
});
map.addListener('click', function(e) {
placeMarkerAndPanTo(e.latLng, map);
});
}
function placeMarkerAndPanTo(latLng, map) {
var marker = new google.maps.Marker({ //创建marker对象
position: latLng,
map: map
});
map.panTo(latLng); //地图居中到当前坐标
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC8IXpNgfA7uD-Xb0jEqhkEdB7j3gbgOiE&callback=initMap&signed_in=true" async defer></script>
</body>
</html>
这段运行效果,就是你点击地图就会添加一个marker标记。然后就这样子...
我是想要一个marker标记呀!这么多,咋处理,心塞...
谷歌地图就不能给个完整的么,真的是╮(╯_╰)╭
然后百度谷歌了好久,就是没有想要的答案,程序猿的调bug心情,大家都懂的...
不过倒是收获一点,就是删除marker的命令:marker.setMap(null)
;
之后,就在点击事件里,加上marker.setMap(null)
,加到方法里,结果是marker
对象全部清空,并没有解决问题。
so,自己想了个办法,就是每点击一下,创建的marker对象就存到一个数组里,然后点击下一个重新创建marker
的时候,就将前一个数组的对象删除掉。(不知道大家有什么好的建议,目前没找到合适的,也不清楚官网的正规方法是怎么做的...)
var markersArray = [];
//添加坐标对象
function addMarker(latLng, map) {
if(markersArray.length>0){
markersArray[0].setMap(null); //每次添加的时候,都要把之前的marker对象清空
};
markersArray.shift(marker); //然后再移出数组
marker = new google.maps.Marker({
position: latLng,
map: map
});
markersArray.push(marker); //将新的marker对象添加到数组
}
作为程序员,也都知道大家的习性,都是希望拿来的代码直接能用是不是,我一向都是帅气善良体贴的man,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var myLatlng = {
lat: -25.363,
lng: 131.044
};
var marker ;
var markersArray = [];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: myLatlng
});
map.addListener('click', function(e) {
addMarker(e.latLng, map);
});
//添加坐标对象
function addMarker(latLng, map) {
if(markersArray.length>0){
markersArray[0].setMap(null);
};
markersArray.shift(marker)
marker = new google.maps.Marker({
position: latLng,
map: map
});
markersArray.push(marker);
}
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC8IXpNgfA7uD-Xb0jEqhkEdB7j3gbgOiE&callback=initMap" async defer></script>
</body>
</html>
好了,至此就能添加marker了。如果有其它方法,还希望大家能给我提个意见(^o^)/~
时间不够了,剩下的下一篇再写,如何获取当前点击的坐标以及城市街道地址等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。