gpt4 book ai didi

javascript - 缩放时标记改变位置

转载 作者:行者123 更新时间:2023-12-03 01:30:06 28 4
gpt4 key购买 nike

当用户从 Google map 自动完成 API 中选择他的地址时,我尝试用标记显示 Google map 。

标记显示的位置几乎正确,但如果缩放 map ,则标记位置会发生变化。

感谢您的帮助。

演示:https://tap-informatika.hr/testovi/googleMaps.html

代码:

HTML:

<div style="">
<div id="locationField">
<label for="">Enter address</label> <br>
<input id="autocomplete" autofocus placeholder="Enter your address" type="text"></input>
</div>
<br><br>
<h3>Result</h3>
<div>
<div>
<label for="">City</label> <br>
<input type="text" id="city">
</div>
<div>
<label for="">Street</label> <br>
<input type="text" id="street">
</div>
</div>

<div id="map"></div>
</div>

CSS:

body{
width: 900px;
margin: auto;
}
input{
width: 100%;
padding: 5px 10px;
outline: 0;
border-width: 0 0 2px;
border-color: #33691E;
}
div{
padding: 20px 5px;
}
#map {
width: 800px;
height: 400px;
margin: auto;
}

Javascript:

var placeSearch, autocomplete;
function initAutocomplete() {
autocomplete = new google.maps.places.Autocomplete(
/** @type {!HTMLInputElement} */(document.getElementById('autocomplete')),
{types: ['geocode']});
autocomplete.addListener('place_changed', fillInAddress);
}
function fillInAddress() {
var place = autocomplete.getPlace();
var address = '';

console.log(place);

for (var i = 0; i < place.address_components.length; i++){
if(place.address_components[i]['types'][0] == 'route'){
address = place.address_components[i]['long_name'];
}
if(place.address_components[i]['types'][0] == 'locality'){
var address = place.address_components[i]['long_name'];
}
}
for (var i = 0; i < place.address_components.length; i++){
if(place.address_components[i]['types'][0] == "street_number"){
address = address + ' ' + place.address_components[i]['long_name'];
}
}
document.getElementById('street').value = address;
document.getElementById('city').value = city;
var marLoc = new google.maps.LatLng(place.geometry.location.lat(),place.geometry.location.lng());

var map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: marLoc
});

var marker = new google.maps.Marker({
position: marLoc,
map: map
});


}

最佳答案

您的风格与 map 相冲突...

删除该部分:

div{
padding: 20px 5px;
}

缩放问题消失了


<小时/>

像这样的故障排除/调试案例,我建议您开始从演示中删除一些内容,看看是什么触发了问题。
我首先对您的演示进行了大清理,将其降至最低限度:

<!DOCTYPE html>
<html>
<head>
<style> #map { width: 800px; height: 400px} </style>
</head>
<body>
<label for="">Enter address</label> <br>
<input id="autocomplete" autofocus placeholder="Enter your address" type="text"></input>
<div id="map"></div>
<script>
var autocomplete;
function initAutocomplete() {
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')),
{types: ['geocode']});
autocomplete.addListener('place_changed', fillInAddress);
}
function fillInAddress() {
var place = autocomplete.getPlace();
var marLoc = new google.maps.LatLng(place.geometry.location.lat(),place.geometry.location.lng());
var map = new google.maps.Map(document.getElementById('map'), { zoom: 17, center: marLoc });
var marker = new google.maps.Marker({ position: marLoc, map: map });
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDv6zFowPwykhVGM_n-VBYtwTkM61n_cvk&libraries=places&callback=initAutocomplete"
async defer></script>
</body>
</html>

看到问题消失了,那么就不是Google标记中的错误了,那就是代码了,开始一件一件地剥离东西,一旦我删除了div样式,一切就正常了。

关于javascript - 缩放时标记改变位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51342503/

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