Это означает, что вы на самом деле не установили infoWindow
как что-либо, вы только что объявили, что оно существует. Интерпретатор JavaScript говорит вам, что вы не можете попытаться получить доступ к свойству для чего-то, что еще не было определено.
Вы можете правильно инициализировать infoWindow
, создав его следующим образом:
var infoWindow = new google.maps.InfoWindow({});
Полный код (с некоторым очищенным форматированием):
var map;
var infoWindow;
var x = document.getElementById("geoLocation");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('This is your location.');
infoWindow.open(map);
map.setCenter(pos);
x.innerHTML = "Latitude: " + (position.coords.latitude).toFixed(6) +
"<br>Longitude: " + (position.coords.longitude).toFixed(6);
}
function initMap() {
var bamako = new google.maps.LatLng(12.6425212, -8.0099928),
infoWindow = new google.maps.InfoWindow({});
map = new google.maps.Map(document.getElementById("map"), {
center: bamako,
zoom: 16
}),
marker = new google.maps.Marker({position: bamako, map: map});
google.maps.event.addListener(map, "mousemove", function (e) {
var t = e.latLng;
document.getElementById("mlat").innerHTML = "(" + t.lat().toFixed(6) + ", " + t.lng().toFixed(6) + ")"
});
google.maps.event.addListener(map, "click", function (e) {
marker.setPosition(e.latLng);
var t = e.latLng, o = "(" + t.lat().toFixed(6) + ", " + t.lng().toFixed(6) + ")";
document.getElementById("lat").value = t.lat().toFixed(6), document.getElementById("lng").value = t.lng().toFixed(6);
});
getLocation();
}