Я использую API Карт Google JavaScript и форму HTML, чтобы добавить маркер на карту на основе координат широты и долготы, которые пользователь вводит в форму. Ниже приведен код моего тела на моей HTML странице:
<body>
<div id="mainForm">
<form id="mainForm" name="mainForm" method="get">
Latitude: <input type="text" id="latitude" name="latitude">
Longitude: <input type="text" id="longitude" name="longitude">
<input type="submit" name="submit" onClick="results(this.form)">
</form>
</div>
<!--The div element for the map -->
<div id="map">
<script>
var latitudeNew;
var longitudeNew;
function results (form) {
latitudeNew = parseFloat(form.latitude.value);
longitudeNew = parseFloat(form.longitude.value);
console.log(latitudeNew);
}
// Initialize and add the map
function initMap() {
// The location of the markers
var UScenter = {lat: 38.1, lng: -96.8};
var formInput = {lat: latitudeNew, lng: longitudeNew};
// The map, centered on the U.S.
var map = new google.maps.Map(
document.getElementById('map'), {
zoom: 5,
center: UScenter,
disableDefaultUI: true,
zoomControl: true
});
map.setOptions({ minZoom: 3, maxZoom: 20 });
var contentString = '<div id="content">'+
'<div id="siteNotice">'+
'</div>'+
'<h1 id="firstHeading" class="firstHeading">Hello</h1>'+
'<div id="bodyContent">'+
'<p>Name</p>'+
'</div>'+
'</div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
// The markers
var marker = new google.maps.Marker({position: formInput, map: map});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?&callback=initMap">
</script>
</div>
</body>
Как вы, вероятно, уже можете сказать, посмотрев код, моя форма вызывает функцию results
при отправке, которая определяет переменные latitudeNew
и longitudeNew
. Эти переменные позже используются в функции initMap
для определения положения маркера с переменной formInput
. Я знаю, что проблема связана с отдельными глобальными и локальными переменными, которые я создаю, но различные решения, которые я пытался решить, не помогли мне, например, определение переменных как window.latitude/longitude
и определение переменные вне функций.
Поэтому мой конкретный c вопрос заключается в том, как определить переменные latitudeNew
и longitudeNew
и где их разместить, чтобы я мог получить значение входных данных правильно ли пользователь вставляет в форму маркер на карте Google?