Пользовательская ссылка на карту Google не работает
Пытаясь заставить мои маркеры указывать на другие страницы. Скопированы ответы из ранее решенных дел. Все еще не работает. Карта с маркерами подходит. Тем не менее, даже названия есть, ссылки не работают. Продолжайте иметь сообщение "Uncaught ReferenceError: маркер не определен". Что я тут не так делаю?? Закончились идеи.
Может кто-нибудь посмотреть, чтобы помочь мне из этого. Гигантское спасибо;
<script
src="https://maps.googleapis.com/maps/api/js?language=ko&key=AIzaSyA3WDZ1KfeUb_Q-SxtIRE2wZ4RBieuGl7s"
type="text/javascript">
</script>
<script>
function Goog2() {
var mapCanvas = document.getElementById('Google_map');
var mapOptions = {
center: new google.maps.LatLng(45.80257,15.9371),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions);
var myLatLng0 = new google.maps.LatLng(45.80257,15.9371);
var myLatLng1 = new google.maps.LatLng(45.805455,15.983761);
var myLatLng2 = new google.maps.LatLng(45.738822, 16.068278);
var myLatLng3 = new google.maps.LatLng(45.803816, 15.993573);
var markers = [];
markers[0] = new google.maps.Marker({
position: myLatLng0,
map: map,
url: '/cocohouse/location/CH_location_en.html',
icon: "/images/ariranglogoimage28_2.png",
title: 'Coco House',
});
markers[1] = new google.maps.Marker({
position: myLatLng1,
map: map,
icon: "/images/cocohouse/location/train26.png",
url:"/cocohouse/location/to_CH3_en.html",
title: 'Train Terminal',
});
markers[2] = new google.maps.Marker({
position: myLatLng2,
map: map,
icon: "/images/cocohouse/location/airport32.png",
url:"/cocohouse/location/to_CH1_en.html",
title: 'Airport',
});
markers[3] = new google.maps.Marker({
position: myLatLng3,
map: map,
icon: "/images/cocohouse/location/bus26.png",
url:"/cocohouse/location/to_CH2_en.html",
title: 'Bus Terminal',
});
}
google.maps.event.addDomListener(window, 'load', Goog2);
for ( i = 0; i < markers.lenght; i++ ) {
google.maps.event.addListener(markers[i], 'click', function() {
window.location.href = this.url;
});
}
</script>
3 ответа
markers.lenght;
должен прочесть markers.length;
for (var i=0; i < markers.length; i++) {
google.maps.event.addListener(markers[i], 'click', function () {
window.location.href = this.url;
});
}
markers
Необходимо определить, прежде чем использовать его.
Ты звонишь Goog2
при загрузке окна, но ваш цикл выполняется до этого события и до заполнения вашего массива.
Вы используете "маркеры" в контексте, который не определен. 'маркеры' объявлены в функции Goog2 и используются снаружи.
Попробуйте (не проверено):
<script>
function Goog2() {
var mapCanvas = document.getElementById('Google_map');
var mapOptions = {
center: new google.maps.LatLng(45.80257,15.9371),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions);
var myLatLng0 = new google.maps.LatLng(45.80257,15.9371);
var myLatLng1 = new google.maps.LatLng(45.805455,15.983761);
var myLatLng2 = new google.maps.LatLng(45.738822, 16.068278);
var myLatLng3 = new google.maps.LatLng(45.803816, 15.993573);
var markers = [];
markers[0] = new google.maps.Marker({
position: myLatLng0,
map: map,
url: '/cocohouse/location/CH_location_en.html',
icon: "/images/ariranglogoimage28_2.png",
title: 'Coco House',
});
markers[1] = new google.maps.Marker({
position: myLatLng1,
map: map,
icon: "/images/cocohouse/location/train26.png",
url:"/cocohouse/location/to_CH3_en.html",
title: 'Train Terminal',
});
markers[2] = new google.maps.Marker({
position: myLatLng2,
map: map,
icon: "/images/cocohouse/location/airport32.png",
url:"/cocohouse/location/to_CH1_en.html",
title: 'Airport',
});
markers[3] = new google.maps.Marker({
position: myLatLng3,
map: map,
icon: "/images/cocohouse/location/bus26.png",
url:"/cocohouse/location/to_CH2_en.html",
title: 'Bus Terminal',
});
for ( i = 0; i < markers.length; i++ ) {
google.maps.event.addListener(markers[i], 'click', function() {
window.location.href = this.url;
});
}
}
google.maps.event.addDomListener(window, 'load', Goog2);
</script>
Вы добавляете прослушиватели кликов до того, как маркеры существуют. Переместите эту петлю внутрь Goog2
функция. Пример фрагмента кода (поменял маркеры на общедоступные значки, URL-адреса на произвольные общедоступные, исправил орфографическую ошибку на markers.length).
function Goog2() {
var mapCanvas = document.getElementById('Google_map');
var mapOptions = {
center: new google.maps.LatLng(45.80257, 15.9371),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions);
var myLatLng0 = new google.maps.LatLng(45.80257, 15.9371);
var myLatLng1 = new google.maps.LatLng(45.805455, 15.983761);
var myLatLng2 = new google.maps.LatLng(45.738822, 16.068278);
var myLatLng3 = new google.maps.LatLng(45.803816, 15.993573);
var markers = [];
markers[0] = new google.maps.Marker({
position: myLatLng0,
map: map,
url: 'http://google.com',
icon: "http://maps.google.com/mapfiles/ms/micons/yellow.png",
title: 'Coco House',
});
markers[1] = new google.maps.Marker({
position: myLatLng1,
map: map,
icon: "http://maps.google.com/mapfiles/ms/micons/blue.png",
url: "http://yahoo.com",
title: 'Train Terminal',
});
markers[2] = new google.maps.Marker({
position: myLatLng2,
map: map,
icon: "http://maps.google.com/mapfiles/ms/micons/green.png",
url: "http://maps.google.com",
title: 'Airport',
});
markers[3] = new google.maps.Marker({
position: myLatLng3,
map: map,
icon: "http://maps.google.com/mapfiles/ms/micons/purple.png",
url: "http://www.cnn.com",
title: 'Bus Terminal',
});
for (i = 0; i < markers.length; i++) {
google.maps.event.addListener(markers[i], 'click', function() {
window.location.href = this.url;
});
}
}
google.maps.event.addDomListener(window, 'load', Goog2);
html,
body,
#Google_map {
height: 500px;
width: 500px;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="Google_map" style="width:750px; height:450px; border: 2px solid #3872ac;"></div>