Попробуйте изменить свой код на это:
<script type="text/javascript">
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.write(latitude, longitude);
});
}
</script>
Функция, которую вы передаете в getCurrentPosition()
, будет выполнена при получении позиции. Только тогда у вас есть доступ к позиции, и вы можете установить latitude
и longitude
переменные и записать их в документ.
В вашем коде будет вызываться getCurrentPosition()
, затем сразу после этого будет выполнено document.write(latitude,longitude);
, что намного раньше, чем станут доступны latitude
и longitude
. Вы должны переместить document.write()
в Location()
.
Обновление 1 (на основе комментариев):
Если вы не хотите делать document.write()
внутри функции обратного вызова, но хотите вызвать другую функцию, то вы должны вызывать ее из функции обратного вызова.
Это будет выглядеть так:
<script type="text/javascript">
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
myFunction(latitude, longitude);
});
}
function myFunction(latitude, longitude) {
// you can do here anything you wish
document.write(latitude, longitude);
}
</script>
Обновление 2 (на основе комментариев и обновленного вопроса):
Способ обработки загрузки карты на основе позиции состоит в том, чтобы вызвать initialize()
из Location()
с latitude
и longitude
в качестве параметров. Чтобы убедиться, что код, работающий с элементами HTML, выполняется при загрузке страницы, вы можете выполнить его внутри Location()
.
window.onload = intialize(latitude, longitude);
См. это для полного кода.