gpt4 book ai didi

javascript - Google Maps api v3 - map 只有一个标记

转载 作者:行者123 更新时间:2023-11-29 18:27:22 25 4
gpt4 key购买 nike

我正在 Google map 中创建一张 map ,我希望只有一个标记。当用户第一次点击 map 时,会创建一个标记(周围有一个圆圈)。当用户再次点击时,旧标记(和圆圈)将移动到新位置。

基本上,这可以通过移动标记和圆圈,或者删除它们并创建一个新的标记和圆圈来完成。

目前我正在尝试使用后一种方法,但不幸的是它不起作用。谁能帮忙?

<script>
//Initial variables (map and the markers array, which we're going to try to get rid of)
var map;
var markersArray = [];

//and GO!
function initialize()
{
//need to correct our starting location - over UK would be nice
var haightAshbury = new google.maps.LatLng(37.7699298, -122.4469157);
var mapOptions =
{
zoom: 12,
center: haightAshbury,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
//listen out for clicks and, when clicked, add a marker
google.maps.event.addListener(map, 'click', function(event)
{
addMarker(event.latLng);
});
}

// Add a marker to the map and push to the array.
function addMarker(location)
{
markersArray = [];
setAllMap(null);
var marker = new google.maps.Marker(
{
position: location,
map: map,
draggable: true
});
//create a circle
var circle = new google.maps.Circle(
{
map: map,
radius: 3000
});
//bind the circle to the marker we've also just created
circle.bindTo('center', marker, 'position');
}

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

最佳答案

如果您一次只需要一个标记,则不需要数组来存储标记。您必须确保使用 setMap 方法并传递 null 清除标记和圆的 map 属性。圆圈是错误的,您没有所需的所有选项,也没有 bindTo 方法。这是 circle documentation .

我看到您将标记的 draggable 属性设置为 true,因此您还需要在标记上添加一个 dragend 事件以将圆重新定位到标记的新位置,使用圆上的 setCenter 方法。

这是一个完整的例子:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Google Maps</title>
<style>
#map_canvas{
height:800px;
width:800px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false">
</script>
<script>
var marker, myCircle, map;
function initialize() {
var myLatlng = new google.maps.LatLng(37.7699298, -122.4469157);
var mapOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);

google.maps.event.addListener(map, 'click', function(event){
addMarker(event.latLng);
});
}

function addMarker(latLng){
//clear the previous marker and circle.
if(marker != null){
marker.setMap(null);
myCircle.setMap(null);
}

marker = new google.maps.Marker({
position: latLng,
map: map,
draggable:true
});

//circle options.
var circleOptions = {
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
center: latLng,
radius: 3000
};
//create circle
myCircle = new google.maps.Circle(circleOptions);

//when marker has completed the drag event
//recenter the circle on the marker.
google.maps.event.addListener(marker, 'dragend', function(){
myCircle.setCenter(this.position);
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas"></div>
</body>
</html>

关于javascript - Google Maps api v3 - map 只有一个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com