【发布时间】:2015-11-23 01:28:57
【问题描述】:
我有一个这样的 HTML 页面:
<button onclick="initMap()">Regenerate</button><BR>
Latitude<input style="width: 5em;" id="lat" name="lat" type="number" value="35.9000" step="0.1"/></div><BR>
Longitude<input style="width: 5em;" id="long" name="long" type="number" value="15.7500" step="0.1"/></div>
<div id="map"></div>
<script>
var map;
function initMap() {
var latitude = parseFloat ($('#lat').val());
var longitude = parseFloat ($('#long').val());
var mapOptions = {
zoom: 13,
center: new google.maps.LatLng(latitude, longitude),
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
}
$( "#lat" ).change(function() {
placeMarkers();
});
$( "#long" ).change(function() {
placeMarkers();
});
function placeMarkers() {
var latitude = parseFloat ($('#lat').val());
var longitude = parseFloat ($('#long').val());
var markerDep = new google.maps.Marker({
position: {lat: latitude, lng: longitude},
map: map,
label: "D",
draggable: true,
title: 'Departure'
});
var markerArr = new google.maps.Marker({
position: {lat: latitude+0.01, lng: longitude+0.01},
map: map,
label: "A",
draggable: true,
title: 'Arrival'
});
}
</script>
我想与用户在表单和地图中给出的值进行交互。
编辑:部分解决,见上面的代码
每次用户单击/更改值时刷新地图有点“繁重”。因此,我不想在每次输入更改时调用 initMap() ,而是只想替换标记?但是 placeMarkers() 无法做到这一点……除了第一次(加载时)。其他时候,他们会创建新的标记...
【问题讨论】:
-
第一个问题是在initMap函数中没有设置纬度和经度变量。
-
哎呀,是的,他们曾经使用过,但后来我移动了他们!我的错误:(更新了
标签: javascript jquery google-maps-api-3 google-maps-markers