//
"; } commentNode += " "; commentNode += "Введите Ваш комментарий:


"; markerSelect.openInfoWindowHtml(commentNode); } /** Посылка запроса добавления комментария к метке **/ function insertCommentShop(id, user_id, type) { var text_comment = document.getElementById("comment").value; if (text_comment == "") {alert("Вы не ввели комментарий.");} else { commentId = id; commentType = type; if (user_id == "") { var user_id = encodeURIComponent(document.getElementById("name").value); } var send = "id="+id+"&uid="+user_id+"&type="+type+"&text_comment="+encodeURIComponent(text_comment)+"&code=vldmg"; var url = "./catalog/mapscripts/map_insert_comment.php"; request.open("POST", url, true); request.onreadystatechange = insertCommentShopAnswer; request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(send); } } /** Обработка ответа добавления комментария к метке **/ function insertCommentShopAnswer() { if (request.readyState == 4) { if (request.status == 200) { alert("insertCommentShopAnswer"); alert(request.responseText); getComment(commentId, commentType, 1); } } } /** Создание и добавление маркера **/ function createMarker(point, number) { // получаем какой выбран тип type = parseInt(document.getElementById("type_marker_id").value); typeText = ""; var shop = 0; switch (type) { case 1: markerOptions = { draggable: true, /*title: ""+number+" ДПС "*/ icon: new_icon[0] }; typeText = arType[0]; break; case 2: markerOptions = { draggable: true, icon: new_icon[1] }; typeText = arType[1]; break; case 3: markerOptions = { draggable: true, icon: new_icon[2] }; typeText = arType[2]; break; case 4: markerOptions = { draggable: true, icon: new_icon[3] }; typeText = arType[3]; break; case 5: markerOptions = { draggable: true, icon: new_icon[4] }; typeText = arType[4]; break; case 6: markerOptions = { draggable: true, icon: new_icon[5] }; typeText = arType[5]; break; case 7: markerOptions = { draggable: true, icon: new_icon[6] }; typeText = arType[6]; break; case 8: markerOptions = { draggable: true, icon: new_icon[7] }; typeText = arType[7]; break; case 9: markerOptions = { draggable: true, icon: new_icon[8] }; typeText = arType[8]; break; case 10: markerOptions = { draggable: true, icon: new_icon[9] }; typeText = arType[9]; break; case 11: markerOptions = { draggable: true, icon: new_icon[10] }; typeText = arType[10]; break; case 12: markerOptions = { draggable: true, icon: new_icon[11] }; typeText = arType[11]; break; case 13: markerOptions = { draggable: true, icon: new_icon[12] }; typeText = arType[12]; break; } if (type == 1 || type == 2 || type == 3 || type == 13) { commentNode = "Введите описание*:

Введите Ваш комментарий:

 "; } else { shop = 1; commentNode = "Добавление новой организации
Название*:
E-mail:
Телефон:
Web-сайт:
Описание:
Комментарий:
  
"; } // создаем новый объект маркер newMarker = new GMarker(point, markerOptions); // присваиваем ему в качестве значения порядковый номер newMarker.value = number; var prevCord = null; count2++; // возвращаем созданный маркер markerSelect = newMarker; return newMarker; } /** Функция удаления маркера **/ function removeMarker(marker) { // удаляем маркер с карты map.removeOverlay(marker); count2--; } /** Функция устанавливает новое расположение карты **/ function setLocation(call) { // если функция вызванна без параметра (по умолчанию) var city = null; if (call == null){ address = getCookie('address'); addressIndex = getCookie('address_index'); if (address == null) { address = 'Москва'; } if (addressIndex == null) { addressIndex = 0; } //document.getElementById("location").value = address; city = document.getElementById("city"); city.options[addressIndex].selected = true; } // если функция вызвана с параметром 2 else if (call == 2){ address = document.getElementById("city").value; //document.getElementById("location").value = address; city = document.getElementById("city"); addressIndex = city.selectedIndex; } var msk_probki = document.getElementById("msk_probki"); var spb_probki = document.getElementById("spb_probki"); var ekt_probki = document.getElementById("ekt_probki"); if (uid != null) { if (addressIndex == 0) { msk_probki.style.display = "block"; spb_probki.style.display = "none"; ekt_probki.style.display = "none"; } else if (addressIndex == 1) { msk_probki.style.display = "none"; spb_probki.style.display = "block"; ekt_probki.style.display = "none"; } else if (addressIndex == 3) { msk_probki.style.display = "none"; spb_probki.style.display = "none"; ekt_probki.style.display = "block"; } else { msk_probki.style.display = "none"; spb_probki.style.display = "none"; ekt_probki.style.display = "none"; } } if (map != null) { // создаем объект отвечающий за поиск pathname = location.pathname; myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/'; // Установка параметра expire на год вперед. var largeExpDate = new Date(); largeExpDate.setTime(largeExpDate.getTime() + (365 * 24 * 3600 * 1000)); setCookie('address',address,largeExpDate,myDomain); setCookie('address_index',addressIndex,largeExpDate,myDomain); //alert('address='+address+";"+largeExpDate+";"+myDomain); // запоминаем адрес addressDB = address; // запоминаем координату var point = new GLatLng(arrCity[addressIndex][2], arrCity[addressIndex][3]); prevCord = point; //alert("lat="+point.lat()+" lng="+point.lng()); // устанавливаем новые координаты map.setCenter(point, arrCity[addressIndex][4]); // извлекаем и раставляем маркеры selectMarkers(); } } /** Функция устанавливает расположение карты по координатам **/ function setLoacationLatLng(lat, lng, id, size) { if (map != null) { var point = new GLatLng(lat, lng); if (size == null) { size = 11; } map.setCenter(point, size); selectMarkers(); if (id != 0) { getInfoMarkerId(id); } } } /** Функция поиска места по названию **/ function findLocation() { address = document.getElementById("location").value; geocoder = new GClientGeocoder(); //Ищем нужный адрес на карте geocoder.getLatLng(address, function(point) { // если не нашли if (!point) { alert("Адрес \"" + address + "\" не найден на карте."); // устанавливаем предыдущие координаты map.setCenter(prevCord, 13); } // если нашли else { // запоминаем адрес addressDB = address; // запоминаем координату prevCord = point; //alert("lat="+point.lat()+" lng="+point.lng()); // устанавливаем новые координаты map.setCenter(point, 13); // извлекаем и раставляем маркеры selectMarkers(); } }); } /** Функция вызывается при загрузке окна **/ function load(lat, lng, id, size) { add = document.getElementById("add"); addTable = document.getElementById("addTable"); send = document.getElementById("send"); divComment = document.createElement("div"); iconInitialisation(); //createCommentNode(); createRequest(); uid = getCookie("uid"); if (GBrowserIsCompatible()) { // функцию для создания объекта "карта". map = new GMap2(document.getElementById("map")); // устанавливаем элементы управления картой map.addControl(new GSmallMapControl()); //map.addControl(new GMapTypeControl()); // переходим к соответствующей точке на карте (по умолчанию г. Москва) if ((lat != 0) && (lng != 0)) { setLoacationLatLng(lat, lng, id, size); } else { setLocation(); } GEvent.addListener(map, "moveend", function() { selectMarkers(); }); // Создаем событи нажатия на карту GEvent.addListener(map, "click", function(marker, point) { // если щелкнули по маркеру if (marker) { // если маркер можно перетаскивать, значит его только что создали и можно его удалить var dragging = marker.draggingEnabled(); if (dragging) { if(confirm("Удалить маркер?")) { // удаляем маркер removeMarker(marker); } } // иначе это статический маркер извлеченный из базы данных else { markerSelect = marker; // надо извлечь информацию о маркере getInfoMarker(); //infoMarker[1] = "Комментарий"; // показываем окно информации о маркере } } // иначе - по карте else { //pointSelect = point; if (uid != null) { if (add_check) { count++; // создаем новый маркер newMarker = createMarker(point, count); // добавляем на карту markerSelect = newMarker; map.addOverlay(newMarker); // отображаем окно информации newMarker.openInfoWindowHtml(commentNode); } } else { // alert("Извините, но добовлять метки могут только авторизированные пользователи. \nПожалуйста воспользуйтесь формой для входа на сайт или зарегистрируйтесь."); } } }); GEvent.addListener(map, "infowindowopen", function() { var infoWindow = map.getInfoWindow(); infoWindow.enableMaximize(); infoWindow.maximize(); }); } else { map_er = document.getElementById("map"); text_er = document.createTextNode("Ваш барузер не поддерживает функций, необходимых для использования этого сервиса.") map_er.appendChild(text_er); } } /** Функция записи в базу данных новой метки **/ function insertToDataBase(type, lat, lng, shop) { var desc = document.getElementById("desc").value; if (desc != "") { var comment = encodeURIComponent(document.getElementById("comment").value); var send = "uid="+uid+"&location="+addressDB+"&type="+type+"&lat="+lat+"&lng="+lng+"&desc="+encodeURIComponent(desc)+"&comment="+comment; if (shop != 0) { var name = encodeURIComponent(document.getElementById("name").value); var phone = encodeURIComponent(document.getElementById("phone").value); var email = encodeURIComponent(document.getElementById("email").value); var site = encodeURIComponent(document.getElementById("site").value); // var comment = encodeURIComponent(document.getElementById("comment").value); send += "&shop=1"+"&name="+name+"&phone="+phone+"&email="+email+"&site="+site+"&comment="+comment; } else { send += "&shop=0"; } if (name != "") { var url = "./map_insert_test.php"; request.open("POST", url, true); request.onreadystatechange = insertAnswer; request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //alert(send); request.send(send); } else { alert("Вы не ввели название организации"); } } else { alert("Вы не ввели комментарий к метке"); } } /** Функция устанавливает выбранный каталог **/ function setCatalog() { cid = document.getElementById("cid").value; document.getElementById("cat_link").pathname = "shops.php?cid="+cid; load(prevCord.lat(), prevCord.lng(), 0, 13); } /** Функция обработки ответа о записи данных новой метки **/ function insertAnswer() { if (request.readyState == 4) { if (request.status == 200) { count2 = 0; add_check = false; alert(request.responseText); selectMarkers(); map.closeInfoWindow(); } } } /** Функция отправляет запрос на получение маркеров из базы данных **/ function selectMarkers() { // Создаем объект примоугольника bounds = new GLatLngBounds(); // Получаем прямоугольник - текущий видимый участок катры bounds = map.getBounds(); // Создаем объекты географических точек. southWest = new GLatLng(); northEast = new GLatLng(); // Верхная левая и нижная правая точка прямоугольника southWest = bounds.getSouthWest(); northEast = bounds.getNorthEast(); var send = "sw_lan="+southWest.lat()+"&sw_lng="+southWest.lng()+"&ne_lan="+northEast.lat()+"&ne_lng="+northEast.lng()+"&cid="+cid; // alert(send); var url = "./catalog/mapscripts/map_select.php"; request.open("POST", url, true); request.onreadystatechange = selectAnswer; request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(send); } /** Получаем ответ от функции selectMarkers() **/ function selectAnswer() { if (request.readyState == 4) { if (request.status == 200) { // alert("here2"); // получаем информацию в XML var xmlDoc = request.responseXML; // alert(xmlDoc.firstChild.childNodes[1].firstChild.nodeValue); // Извлекаем всю информацию о маркере var marker = xmlDoc.getElementsByTagName("marker"); var marker_id = xmlDoc.getElementsByTagName("marker_id"); var type_marker = xmlDoc.getElementsByTagName("type_marker"); var lan = xmlDoc.getElementsByTagName("lan"); var lng = xmlDoc.getElementsByTagName("lng"); // alert("type"+type_marker[0].firstChild.nodeValue); // alert("id"+marker_id[0].firstChild.nodeValue); // alert("lan"+lan[0].firstChild.nodeValue); // alert(marker.length); for (var i=0; i"; for (var i=0; i"+name_user[i].firstChild.nodeValue+""; strComment += " "+date[i].firstChild.nodeValue+"
"; strComment += text_comment[i].firstChild.nodeValue+"

"; } strComment += ""; var windowOption = {maxTitle: 'Комментарии', maxContent: strComment }; markerSelect.openInfoWindowHtml(strComment, windowOption); var infoWindow = map.getInfoWindow(); infoWindow.enableMaximize(); infoWindow.maximize(); } } } /** Посылка запроса: Получить информацию о маркере **/ function getInfoMarker() { var url = "./catalog/mapscripts/get_info_marker.php?marker_id="+markerSelect.value; // alert("1 "+url); request.open("GET", url, true); request.onreadystatechange = getInfoMarkerAnswer; request.send(null); } /** Обработка ответа: Получить информацию о маркере **/ function getInfoMarkerAnswer() { if (request.readyState == 4) { if (request.status == 200) { // получаем информацию в XML var xmlDoc = request.responseXML; //alert(xmlDoc.firstChild.childNodes[1].firstChild.nodeValue); // Извлекаем всю информацию о маркере var marker_id = xmlDoc.getElementsByTagName("marker_id"); var type_marker = xmlDoc.getElementsByTagName("type_marker"); var name_shop = xmlDoc.getElementsByTagName("name_shop"); var phone = xmlDoc.getElementsByTagName("phone"); var url = xmlDoc.getElementsByTagName("url"); var desc = xmlDoc.getElementsByTagName("desc"); var count_comments = xmlDoc.getElementsByTagName("count_comments"); var type = type_marker[0].firstChild.nodeValue; var ftime = xmlDoc.getElementsByTagName("ftime"); var value = ""; // Строка сообщения value += "
Название: "+name_shop[0].firstChild.nodeValue+"
"; if (phone[0].firstChild != null) { value += "Телефон: "+phone[0].firstChild.nodeValue+"
";} if (url[0].firstChild != null) { value += "Сайт: "+url[0].firstChild.nodeValue+"
";} if (ftime[0].firstChild != null) { value += "Время работы: "+ ftime[0].firstChild.nodeValue +"
";} if (desc[0].firstChild != null) { value += "Описание: "+desc[0].firstChild.nodeValue; value += " подробнее
"; } value += "
Комментарии ("+count_comments[0].firstChild.nodeValue+") Добавить комментарий
"; if (value.length > 600 ) { var windowOption = {maxTitle: 'Информация о фирме', maxContent: value }; markerSelect.openInfoWindowHtml(value, windowOption); var infoWindow = map.getInfoWindow(); infoWindow.enableMaximize(); infoWindow.minimize();} else { // map.openInfoWindowHtml(map.getCenter(), value); markerSelect.openInfoWindowHtml(value); } } } } function getInfoMarkerId(id) { var url = "./catalog/mapscripts/get_info_marker.php?marker_id="+id; // alert(url); request2.open("GET", url, true); request2.onreadystatechange = getInfoMarkerIdAnswer; request2.send(null); } function getInfoMarkerIdAnswer() { if (request2.readyState == 4) { if (request2.status == 200) { // получаем информацию в XML var xmlDoc = request2.responseXML; // alert(xmlDoc.firstChild.childNodes[1].firstChild.nodeValue); // Извлекаем всю информацию о маркере var marker_id = xmlDoc.getElementsByTagName("marker_id"); var type_marker = xmlDoc.getElementsByTagName("type_marker"); var name_shop = xmlDoc.getElementsByTagName("name_shop"); var phone = xmlDoc.getElementsByTagName("phone"); var url = xmlDoc.getElementsByTagName("url"); var desc = xmlDoc.getElementsByTagName("desc"); var ftime = xmlDoc.getElementsByTagName("ftime"); var count_comments = xmlDoc.getElementsByTagName("count_comments"); var type = type_marker[0].firstChild.nodeValue; var value = ""; // Строка сообщения value += "Название: "+name_shop[0].firstChild.nodeValue+"
"; if (phone[0].firstChild != null) { value += "Телефон: "+phone[0].firstChild.nodeValue+"
";} if (url[0].firstChild != null) { value += "Сайт: "+url[0].firstChild.nodeValue+"
";} if (ftime[0].firstChild != null) { value += "Время работы: "+ ftime[0].firstChild.nodeValue +"
";} if (desc[0].firstChild != null) { value += "Описание: "+desc[0].firstChild.nodeValue; value += " подробнее
"; } value += "
Комментарии ("+count_comments[0].firstChild.nodeValue+") Добавить комментарий"; if (value.length > 200 ) { var windowOption = {maxTitle: 'Информация о фирме', maxContent: value }; map.openInfoWindowHtml(map.getCenter(), value, windowOption); }else { map.openInfoWindowHtml(map.getCenter(), value); } } } } /** Функция поиска по организациям **/ function findShops() { var findstr = document.getElementById("find_shops").value; if (findstr != "") { var send = "searchstr="+findstr; var url = "./catalog/mapscripts/find_shop.php"; // alert(send); request.open("POST", url, true); request.onreadystatechange = findShopAnswer; request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(send); } } function findShopAnswer() { if (request.readyState == 4) { if (request.status == 200) { var xmlDoc = request.responseXML; // alert(xmlDoc.firstChild.childNodes[1].firstChild.nodeValue); // Извлекаем всю информацию о маркере var shops = xmlDoc.getElementsByTagName("shops"); var id_shop = xmlDoc.getElementsByTagName("id_shop"); var name_shop = xmlDoc.getElementsByTagName("name_shop"); var address_shop = xmlDoc.getElementsByTagName("address_shop"); var type_shop = xmlDoc.getElementsByTagName("type_shop"); var lan = xmlDoc.getElementsByTagName("lan"); var lng = xmlDoc.getElementsByTagName("lng"); if (shops.length > 0) { setLoacationLatLng(lan[0].firstChild.nodeValue, lng[0].firstChild.nodeValue, id_shop[0].firstChild.nodeValue, 15); } else { alert("Ничего по запросу не найдено"); } } } } /** Функция получения ссылки на текущее место на карте **/ function getLink() { center = new GLatLng(); center = map.getCenter(); size = map.getZoom(); win3.getContent().innerHTML = "

Ссылка на текущее место на карте:
http://localhost/index.php?lat="+center.lat()+"&lng="+center.lng()+"&size="+size+"

"; win3.showCenter(); } /** Функция закрывает информационное окно **/ function windowClose(w) { var show = document.getElementById("show_"+w).checked; if (show) { pathname = location.pathname; myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/'; // Установка параметра expire на год вперед. var largeExpDate = new Date(); largeExpDate.setTime(largeExpDate.getTime() + (365 * 24 * 3600 * 1000)); setCookie(''+w,1,largeExpDate,myDomain); } if (w=="win1") { win1.close(); } else if (w=="win2") { win2.close(); } } //]]>