Спасибо большое за рабочий пример, но я что то пока не пойму.
Буду разбирать рабочий и не рабочий примеры и читать по той ссылке. http://javascript.ru/basic/closure#p...-ispolzovaniya |
Google Map API + external links
Добрый вечер, рони ! Курил Ваш код как мог! Вроде и понятно, но у меня подобная проблема..
Есть карта, поставил живой поиск, в нем генерятся ссылки с id=1 , id=2 и т.п по массиву из xml Хотелось бы попросить помощи у вас, как можно применить Ваш код на моей практике? function load() { var map = new google.maps.Map(document.getElementById("map"), { center: {lat: 47.6145, lng: -122.3418}, zoom: 10, mapTypeId: 'roadmap', disableDefaultUI: 'true' }); //Вот тут начинается самое интересное, тут парсим значения из xml downloadUrl("system/phpsqlajax_genxml.php", function(data) { var xml = data.responseXML; var markerss = []; //полкчаем значения var markers = xml.documentElement.getElementsByTagName("marker"); //в цикле для каждой итерации по количеству записей получаем //соответствующие значения for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("name"); var address = markers[i].getAttribute("address"); var type_mark= markers[i].getAttribute("type_mark"); var point = new google.maps.LatLng( parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); //получаем значение, почему то с new array тут не получилось var idArr = markers[i].getAttribute("id"); //собственно я не знаю куда прицепить эту конструкцию var a = document.getElementById(idArr[i]); a.onclick = function() { map.setZoom(17); map.setCenter(lat,lng); } //Дальше уже не интересно, потому что дальше уже работа с картой и окнами в балунах |
olezha,
не особо понимаю ваш код, строка 25 получение массива??? или строка 28 не нуждается в индексе? var a = document.getElementById(idArr[i]); |
рони,
я не шибко силен в js по этому могу скинуть весь код карты и Вы поможете мне адаптировать Вашу наработку. Теоретически мы в цикле получаем айдишник в строке 25 а потом уже вешаем событие.. хотя если не работает, значит это в корне не так, посему прилагаю полный js код Буду безмерно благодарен Вам, если вы мне поможете!) //<![CDATA[ var customIcons = { restaurant: {icon: '../assets/img/map/pointer_blue.png'}, bar: {icon: '../assets/img/map/pointer_favourited.png'}}; var options = {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'}; var icon_balun='../assets/img/map/pointer_green.png'; function load() { var map = new google.maps.Map(document.getElementById("map"), { center: {lat: 47.6145, lng: -122.3418}, zoom: 10, mapTypeId: 'roadmap', disableDefaultUI: 'true' }); var infoWindow = new google.maps.InfoWindow; // --------------------- // ---------------------Try HTML5 geolocation. // --------------------- navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude }; map.setCenter(pos); }); // --------------------- //--------------------end of geolocation // --------------------- // Change this depending on the name of your PHP file downloadUrl("system/phpsqlajax_genxml.php", function(data) { var xml = data.responseXML; var markerss = []; var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("name"); var address = markers[i].getAttribute("address"); var type_mark= markers[i].getAttribute("type_mark"); var point = new google.maps.LatLng( parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); //custom infowindow creating here var html = "<img scr=" + icon_balun +"><b>" + name + "</b> <br/>" + address + "<form><button>follow</button></form>"; var icon = customIcons[type_mark] || {}; var marker = new google.maps.Marker({ map: map, position: point, icon: icon.icon}); markerss.push(marker); bindInfoWindow(marker, map, infoWindow, html); } var markerCluster = new MarkerClusterer(map, markerss,options); }); } function bindInfoWindow(marker, map, infoWindow, html) { google.maps.event.addListener(marker, 'click', function() { infoWindow.setContent(html); infoWindow.open(map, marker); }); } function downloadUrl(url, callback) { var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest; request.onreadystatechange = function() { if (request.readyState == 4) { request.onreadystatechange = doNothing; callback(request, request.status); } }; request.open('GET', url, true); request.send(null); } function doNothing() {} //]]> |
olezha,
не могу помочь ... нет мыслей |
Часовой пояс GMT +3, время: 09:03. |