Карта Google в uCoz
|
|
[31] k142 [29.06.2012, 11:38] |
под скриптом я имеею виду вот это:
Код var map, circle, circleOptions, setCenter, marker;
function initialize() { var myLatlng = new google.maps.LatLng(50.45127, 30.523368); //Kiev var myOptions = { zoom: 9, center: myLatlng, mapTypeId: google.maps.MapTypeId.HYBRID } map = new google.maps.Map(document.getElementById("my_map"), myOptions);
setCenter = true;
circleOptions = { fillColor:"#00AAFF", fillOpacity:0.5, strokeColor:"#FFAA00", strokeOpacity:0.8, strokeWeight:2, clickable:false }
google.maps.event.addListener(map, 'click', function(event) { if (setCenter) { if (marker != undefined) { marker.setMap(null); } marker = new google.maps.Marker({ position:event.latLng, clickable:false }); marker.setMap(map); circleOptions.center = event.latLng; setCenter = false; } else { //рассчитываем расстояние между точками var radius = distHaversine(circleOptions.center, event.latLng) circleOptions.radius = radius*1000; if (circle != undefined) { circle.setMap(null); } circle = new google.maps.Circle(circleOptions); circle.setMap(map); setCenter = true; } }); }
function loadScript() { var script = document.createElement("script"); script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize"; document.body.appendChild(script); }
//http://stackoverflow.com/questions/1502590/calculate-distance-between-two-points-in-google-maps-v3 rad = function(x) {return x*Math.PI/180;}
distHaversine = function(p1, p2) { var R = 6371; // earth's mean radius in km var dLat = rad(p2.lat() - p1.lat()); var dLong = rad(p2.lng() - p1.lng());
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c;
return d.toFixed(3); }
window.onload = loadScript;
и как правильно выше написаное называется? будет ли вообще это работать? |
|
[32] likbezz [29.06.2012, 11:42] |
k142, под скриптом я имеею виду вот это: Ну, это стандартный гугловский скрипт карты. Он и инициализирует саму карту, должен находится на каждой странице с картой, естественно.
будет ли вообще это работать? В смысле «работать»? Карту выводить будет. Это стандартный гугловский скрипт - почему не будет? должен)
Вот ссылочка на инструкцию по API Goole Map http://code.google.com/intl/ru/apis/maps/signup.html Если интересно, советую ознакомится в первую очередь. |
|
[33] k142 [01.07.2012, 15:49] |
likbezz, я тебе премного благодарен за помощь! |
|
[34] Solyt [18.08.2012, 09:28] |
Какая замечательная функия))) а сделать общую карту со всеми результатами материалов на отдельной страничке и чем-то похожим как здесь http://www.tominsk.com/load/karty_kvartir_na_sutki/vse_kvartiry_na_karte/odnokomnatnye_kvartiry_na_sutki/7-1-0-8 можно? Если да то хотелось бы видеть у себя на сайте )) сделаешь? |
|
[35] likbezz [18.08.2012, 11:49] |
Solyt, В такой форме вопросы даже не рассматриваются мною. |
|
[36] Solyt [18.08.2012, 11:59] |
хм, а чем форма вопроса не понравилась то? именно "сделаешь" подразумевает исключительно твою работу, с оплатой с моей стороны соответственно. Или как спросить?! Сделаем, сделаете, продашь, рассмотрите возможность помощи.. может я что должен остался да по невнимательности забыл, так ты скажи, мыж люди как ни как... |
|
[37] likbezz [18.08.2012, 12:07] |
Solyt, подразумевает исключительно твою работу, с оплатой с моей С оплатой - вопросы в личку. Во всяком случае именно «оплата» любая, никак не фигурирует в вопросе. так ты скажи, мыж люди как ни как... Так и спроси: сколько будет стоить сделать так --\\ и тут подробное описание \\-- Или: что нужно чтобы вывести ... --\\ и тут подробное описание \\-- |
|
[38] Solyt [18.08.2012, 12:35] |
а у меня что были кидаловы с моей стороны по оплате или я первый раз к тебе обратился? если я прошу в чем-то помочь (не говоря об оплате) то так и пишу спаси... при этом полагая что суть проблемы копеешная, если это не так, то как и раньше ты вполне спокойно можешь сказать "стоит столько то"... сегодня отправил тебе ссылочку на скрипт, ты видимо не заметил))) так вот это тоже подразумевалось за деньги. |
|
[39] Fariz [11.10.2012, 15:50] |
общую карту со всеми результатами материалов на отдельной страничке
likbezz, Посоветуй, в каком направлении думать. Я использую яндекс.карты. Есть реализация добавления на карту нескольких объектов разделенных на группы. Вот эта часть скрипта выводит адрес метки для объектов каждой группы var groups = [ createGroupa(1,"Квартиры",[ $MYINF_8$ ]), createGroupa(2,"Комнаты",[ $MYINF_9$ ]), createGroupa(3,"Коттеджи",[ $MYINF_10$ ]), ]; Но не могу решить один вопрос: 1. При добавлении материала есть поле $AUTHOR_SITE$ - переименовано в "адрес". Именно по адресу выводится метка на карте. 2. Для каждой группы адрес выводится с помощью информера. Вот таким образом ["$AUTHOR_SITE$"], .Не смог придумать, как по другому. Если групп немного, то можно оставить вывод адресов с помощью информеров. А как быть, если групп будет больше 30? В этом и состоит вопрос. Можно каким-то образом (кроме информеров) брать данные из поля $AUTHOR_SITE$ и передавать скрипту для метки на карте? |
|
[40] likbezz [11.10.2012, 15:54] |
Fariz, Если групп немного, то можно оставить вывод адресов с помощью информеров. А как быть, если групп будет больше 30? Вообще, раз один фик - это скрипт, смысл так беспечно тратить информеры не вижу. А для групп можно прописать координаты в профиле, или вообще в отдельном файле JS.
А для меткибрать данные из поля $AUTHOR_SITE$ и передавать скрипту для метки на карте? Скриптом. GET запросом. Выводить эту переменную в скрытом блоке с ID и брать.
Или использовать php с текстовой базой.
А вообще, сложно так сказать, я честно говоря, не оч. понял какие именно затруднения... и где и как все это выглядит.
Если объекты по категориям - можно отрываться от ID категории/раздела и прописать условиями ..
Но, по любому, раз карта - скрипт - смысл использовать именно информеры ... странный. когда все то же самое можно скриптом - это же простой JS массив данных. Опять же, если объектов немного. Если много, то только информероам или php. |
|
[41] chila [06.03.2013, 19:09] |
День добрый. Есть, практически, рабочий вариант карты, с кучей скриптов... Но, что-то не хватает) Скрипт карты:
Код var mapMenuOpen = true; var shadow = new google.maps.MarkerImage( 'link', new google.maps.Size(87,50), new google.maps.Point(0,0), new google.maps.Point(30,50) ); function mapMenuClose() { if (!mapMenuOpen) { $('#haritaPopUp').css('display', 'none'); mapMenuOpen = true; }}
$(function () {
$('#anaharita').gmap3({ map:{ options: { center: [48.462547, 35.051019], zoom: 16,
} } });
$('#anaharita').gmap3({ marker:{ values: list, // подтягивает с скрипта js/data.js (разметку этого файла прикрепил ниже) options: { draggable: false, shadow: shadow },
// single marker events
events: { click: function (marker, event, context) { mapMenuOpen = true; var map = $(this).gmap3('get'); var scale = Math.pow(2, map.getZoom()); var nw = new google.maps.LatLng( map.getBounds().getNorthEast().lat(), map.getBounds().getSouthWest().lng()); var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw); var worldCoordinate = map.getProjection().fromLatLngToPoint(marker.getPosition()); var pixelOffset = new google.maps.Point(Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale), Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale)); var mapposition = $("#anaharita").position(); if (context.data.type != "merkez") { var icerik = "<div class='left'><div class='magazaadi' id='magazaadi'> " + context.data.adi + "</div><div class='magazaadres' id='magazaadres'> " + context.data.adres + "</div><div class='magazabilgi' id='magazabilgi'>" + context.data.bilgi + "</div></div><div class='right'><div class='urunlogo' onClick='CreatePresentation("+context.data.brosurID+",1,2);'> "+context.data.brosur+" </div></div>"; $(".accordion").html(icerik); magazalogopath = "logo/"; magazabrosurpath = ""; $("#haritaPopUp").css('display', 'block'); $("#haritaPopUp").css('left', (pixelOffset.x + mapposition.left + 15 + 'px')); $("#haritaPopUp").css('top', (pixelOffset.y + mapposition.top - 62 + 'px')); } },
mouseout: function () { mapMenuOpen = false; var t = setTimeout("mapMenuClose()", 500) } }, // cluster definition cluster:{ radius: 100, events: { click: function (cluster, event, context) { $('.accordionButton').click(function () { });
}, click: function (cluster, event, context){} } } },
});
$("#haritaPopUp").mouseover(function() { mapMenuOpen = true; $("#haritaPopUp").css('display', 'block'); }); var map = $("#anaharita").gmap3("get") map.setZoom(13);
$("#haritaPopUp").mouseout(function() { $('#haritaPopUp').css('display', 'none'); }); }); // end of $(function(){
Вышеупомянутый файл, который подтягивается:
Код // иконки для маркеров var иконка = new google.maps.MarkerImage( 'ссылка', new google.maps.Size(59,50), new google.maps.Point(0,0), new google.maps.Point(30,50) );
// список маркеров var list = [
{ lat: 48.4477019, lng: 35.07450399999993, data: { adi: 'Название', adres: "адрес", bilgi: 'доп.данные', brosur: 'превьюшка' }, options: { icon: иконка }}, ];
Суть вопроса: Список маркеров формируется в "вид материалов" в виде:
Код { $OTHER3$ data: { adi: '$TITLE$', adres: "$FILTER1_VALUE$ / $FILTER2_VALUE$", bilgi: '$OTHER2$', brosur: '$IMG_URL1$' }, options: { icon: иконка }}, где $OTHER3$ - координаты маркера, в виде (lat: 0000, lng: 00000,), они записаны предварительно.
... где-то так) вот теперь у меня тупик, как сделать так, чтобы скрипт карты подтягивал инфу не с файла, а искал ее на указанных страницах, например: Список маркеров - искать урл: /board/1-1, /board/1-2, или другие. Может запутанно написал, но как смог. Заранее спасибо |
|
[42] likbezz [06.03.2013, 19:21] |
chila, вот теперь у меня тупик, как сделать так, чтобы скрипт карты подтягивал инфу не с файла, а искал ее на указанных страницах, А что за функция подтягивает файл? Там и копать... |
|
[43] chila [06.03.2013, 19:46] |
Увы, в скриптах не силен. Какая функция это делает, тоже не знаю. Но, если скрипт с маркерами вставить в страницу, то тоже работает. Видать ищет строку var list = [ и от нее пляшет... Есть чей-то скрипт: Код <script type="text/javascript"> $.post("страница", function(data) { var ifnohist = $("#upnews:first", data).html(); if (ifnohist == null) { $('.neew').html('Материалов не найдено'); } $("#upnews", data).each(function() { var histr = $(this).html(); $('.neew').before(histr); }); }); </script> , который ищет совпадения и выводит в див... Вообще реально переделать его так, чтобы результат работы он отображал не в диве, а в этом же скрипте, приблизительно так:
"var list = [" + "результат поиска" + "]," |
|
[44] likbezz [06.03.2013, 21:53] |
Видать ищет строку var list = [ и от нее пляшет... Не строку, а переменную.. Вообще реально переделать его так, чтобы результат работы он отображал не в диве, а в этом же скрипте, приблизительно так: "var list = [" + "результат поиска" + "]," Реально ... если знать что искать )) Я лично - в скрипт выше не вникал, и что что-то и откуда-то “подгружается” знаю только с ваших слов .. а оказывается вы и сами не очень-то знаете...
вот теперь у меня тупик, как сделать так, чтобы скрипт карты подтягивал инфу не с файла, а искал ее на указанных страницах, например: Список маркеров - искать урл: /board/1-1, /board/1-2, или другие. Не очень понятно что именно на этих страницах ... и что именно желается в результате. Что должно получиться-то? В итоге? |
|
[45] chila [06.03.2013, 22:32] |
Я сам запутался)... Есть скрипт карты, который ищет переменную var list = [ + список маркеров... и выводит карту.... В виде материалов есть скрытый блок с информацией для маркеров. Есть примерный скрипт, который собирает эту информацию воедино и выводит результат в див. Проблема в том, что вышеупомянутый скрипт передает данные в див, а вот как сделать, чтобы эта информация дописывалась в самом скрипте...., примерно где-то так
Код <script type="text/javascript"> $.post("страница", function(data) { var ifnohist = $("#upnews:first", data).html(); if (ifnohist == null) { $('.neew').html('Материалов не найдено'); } $("#upnews", data).each(function() { var histr = $(this).html(); $('.neew').before(histr); }); });
// собираем информацию и выводим: "var list = [" + то, что нашли + "]" // - финиш)
В итоге, в этом скрипте должны появится строки:
var list = [
{ lat: 48.4477019, lng: 35.07450399999993, data: { adi: 'Название', adres: "адрес", bilgi: 'доп.данные', brosur: 'превьюшка' }, options: { icon: иконка }},
];
</script> |
|