gpt4 book ai didi

javascript - 更新标记位置 Google map V3

转载 作者:行者123 更新时间:2023-12-02 23:29:17 26 4
gpt4 key购买 nike

我对 javascript 东西还是个新手,目前正在假装它,直到我成功了,哈哈,现在我遇到了一座小山,我正在努力克服它:S。

目前,我的脚本查找用户位置并在 map 上添加图钉,同时将 LatLon 复制到某些表单字段。

除了放大用户位置之外,我希望他们能够添加自定义地址,将其输入到文本字段中,进行地理编码,然后更新 map 上的当前图钉。

这一切都有效,尽管它向 map 添加了一个额外的图钉,而不是更新当前的图钉。

我不确定如何将地址地理编码函数中的值传递回原始引脚/或者删除原始引脚并添加新引脚。我确信我也可以重用一些函数...我不认为我的代码非常高效:/

无论如何,我希望那里的大师可以帮助我

干杯尼克

 var geocoder;
var map;
var pos;


function initialize() {

geocoder = new google.maps.Geocoder();
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var address = document.getElementById("address").value;
var initialLocation;

var myOptions = {
zoom: 12,
center: initialLocation,
mapTypeId: google.maps.MapTypeId.TERRAIN
}


// Try HTML5 geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);


var marker = new google.maps.Marker({
map: map,
position: pos,
title: 'Location found using HTML5.',
draggable: true
});



var lat = position.coords.latitude
var lng = position.coords.longitude
document.getElementById('geo_latitude').value=lat;
document.getElementById('geo_longitude').value=lng;

google.maps.event.addListener(marker, "dragend", function(event) {

var lat = event.latLng.lat()
var lng = event.latLng.lng()

var infowindow = new google.maps.InfoWindow({
content: '<b><?php _e('Latitude:');?></b>' + lat + '<br><b><?php _e('Longitude:');?></b>' + lng
});
infowindow.open(map, marker);

google.maps.event.addListener(marker, "dragstart", function() {

infowindow.close();
});

document.getElementById('geo_latitude').value=lat;
document.getElementById('geo_longitude').value=lng;


});


map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});

} else if (google.gears) {
browserSupportFlag = true;
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeoLocation(browserSupportFlag);
});
// Browser doesn't support Geolocation


} else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}


function handleNoGeolocation(errorFlag) {
if (errorFlag == true) {
alert("Geolocation service failed.");
initialLocation = newyork;
} else {
alert("Your browser doesn't support geolocation. We've placed you in New York.");
initialLocation = newyork;
}
map.setCenter(initialLocation);
}


map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

//-------------------------------------------------------End initialize

function findAddress(address) {

var address = document.getElementById("address").value;

geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var pos = results[0].geometry.location;

} else {
alert("Geocode was not successful for the following reason: " + status);
}
});

}

最佳答案

要“移动”现有标记,您需要确保其全局,然后您可以使用以下内容更新其在 findAddress 函数中的位置:

marker.setPosition(results[0].geometry.location);

关于javascript - 更新标记位置 Google map V3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640994/

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