#javascript #html #geolocation
#javascript #HTML #геолокация
Вопрос:
Я использую приведенный ниже код, чтобы получить широту и LNG моего текущего местоположения, чтобы отобразить его в форме ввода, но по какой-то причине он не отображает мои широту и LNG, как хотелось, а отображает широту и LNG во мгновение ока и исчезает. Я попытался изменить разрешение своего браузера, чтобы разрешить местоположение, и все равно отображается мгновенно и исчезает. Кто-нибудь может помочь? Ниже приведен мой код:
<form>
<button onclick="onFormSubmit()">GET CURRENT LOCATION</button>
<script type="text/javascript">
function onGeoSuccess (position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
// NEXT 2 LINES WILL SET VALUE OF RESPECTIVE INPUTS
document.getElementById('lat').value = lat;
document.getElementById('lng').value = lng;
// MAKE API CALL HERE, OR ANY OTHER NEXT STEPS
}
function onGeoError (err) {
console.error("Error while trying to get position", err);
}
function onFormSubmit () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(onGeoSuccess, onGeoError);
} else {
alert('GeoLocation not supported or not allowed');
}
}</script>
<div class="form-group">
<input type="text" name="lat" class="form-control" id="lat" placeholder="Your Latitude" data-msg="Please enter your latitude">
<div class="validate"></div>
</div>
<div class="form-group">
<input type="text" name="lng" class="form-control" id="lng" placeholder="Your Longitude" data-msg="Please enter your Longitude">
<div class="validate"></div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" id="contact-subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject">
<div class="validate"></div>
</div>
</form>
Я просто хочу получить отображение LAT и LNG в форме ввода с каждым из его идентификаторов, но я не знаю, что я делаю не так. Он отображается не так, как хотелось бы.
Комментарии:
1. Поскольку координаты отображаются в течение доли секунды, похоже, что вызывается успешный обратный вызов. Вы получаете какие-либо сообщения об ошибках в своей консоли?
2. нет ошибки, может ли это быть результатом моего шаблона веб-сайта?
3. Не знаю. Что он печатает, когда вы
position
первым делом регистрируетесь в своемonGeoSuccess
обратном вызове?4. да, я попытался добавить «onFormSubmit» в <body onload = «onFormSubmit»> </body> и это работает, но я не хочу, чтобы он загружал текущее местоположение, не нажимая на «ПОЛУЧИТЬ ТЕКУЩЕЕ МЕСТОПОЛОЖЕНИЕ»
5. Что
position
печатается?
Ответ №1:
Итак, я отследил свой код и устранил ошибку и обнаружил, что это было просто потому, что я использовал <button onclick="onFormSubmit()">GET CURRENT LOCATION</button>
вместо <button onclick=" return onFormSubmit()">GET CURRENT LOCATION</button>
. Когда я onFormSubmit
onclick
по какой-то причине вызываю just on, он появляется на долю секунды и исчезает, но когда я вызываю return onFormSubmit()
onclick
, все работает отлично.
Комментарии:
1. Хорошо, но это не объясняет основную проблему. Почему lat и lng внезапно отображаются, когда
onFormSubmit
вызывается чем-то другим и в другое время?2. У вас есть лучшее решение для этого? Я открыт для лучшего решения, не уверен, почему оно появляется и отображается. Когда я создал простую HTML-страницу без CSS, она работает отлично, но когда я добавляю к ней CSS, Javascript и другие, она исчезает.
3. Трудно предложить решение, не поняв сначала проблему. Какой у вас CSS? Вы сузили его до оператора CSS, который вызывает проблему?
4. На какую часть CSS я должен обратить внимание? Должен ли я вставить сюда свой CSS?
5. Да, вставьте его сюда, а также начните выполнять двоичный поиск по нему: удалите половину своего CSS-кода, посмотрите, сможете ли вы все еще воспроизвести ошибку. Если нет, проверьте другую половину. Если да, уменьшите его вдвое еще раз. И так далее. Пока вы не найдете строку, которая вызывает проблему.