yandex maps+ видеокамеры с других сайтов?
Доброго дня! Сразу скажу что я ничего не понимаю в Javascript. Хочу создать на своем сайте (смотрю ТОЛЬКО я и члены семьи ТОЛЬКО из под FF 12+) карту с применением api yandex.maps и прикрутить к ней видеокамеры со сторонних сайтов.
Ок, стандартно прикрутил function drawDrsuData(holder, name, text, lon, lan){ var placemark = new YMaps.Placemark(new YMaps.GeoPoint(lon, lan), {style: "default#buildingsIcon"}); placemark.setBalloonContent("<b>"+name+"</b><div><iframe height=\"420\" width=\"400\" scrolling=\"no\" frameborder=\"0\" src=\"http://simg.maps.yandex.net/"+text+" \"></iframe></div>"); holder.addOverlay(placemark); } drawDrsuData(map, 'Волгоградский проспект (в центр) [ms001] 11-я улица Текстильщиков, д.11', '88-v_centr.jpg',37.742,55.707776); и так вызываем по всем точкам (точки тупо вытащены руками из исходника с probki.yandex.ru, я понимаю что это глупость несусветная-меня ПОКА устраивает). Далее есть чУдный сайт http://centrdor.ru/info И вот тут то все намного интереснее- список камер в исходнике отсутствует, но выдает некую строку в ответ на http://www.centrdor.ru/info/portal_s....ashx?q=camera {"camera":[{"road_name":"М2 \"Крым\" Москва - Белгород - гр. с Украиной (на Симферополь) через Тулу\, Орел\, Курск","pos_lat":"55.0437567958206","pos_lon":"37.5590343300976","pos":"82+000"},{"road_name":"М9 \"Балтия\" Москва - гр. с Латвией через Волоколамск (новое направление)","pos_lat":"55.7859091564547","pos_lon":"37.1090172297791","pos":"36+000"}]} Далее если выполнить function AddSightInVisual(holder, name, contact, lon, lan) { var placemark = new YMaps.Placemark(new YMaps.GeoPoint(lon, lan), {style: "default#hospitalIcon"}); placemark.name = holder; placemark.description = name; var obj = "http://www.centrdor.ru/info/portal_service/query.ashx?q=pos&lat="+lan+"&lon="+lon; placemark.setBalloonContent("<b>"+name+"</b><div><iframe height=\"420\" width=\"400\" scrolling=\"yes\" frameborder=\"0\" src=\"http://www.centrdor.ru/info/portal_service/query.ashx?q=pos&lat="+lan+"&lon="+lon+" \"></iframe></div>"); holder.addOverlay(placemark); } то есть в итоге запрос к http://www.centrdor.ru/info/portal_s...11 5624612154 я получаю в iframe очередной список! {"pos":"22+551","dist":"54","name":"М2 \"Крым\" Москва - Белгород - гр. с Украиной (на Симферополь) через Тулу\, Орел\, Курск","shifr":"М2","titul":"\"Крым\"","obsl_org":[{"name":"ФКУ \"Центравтомагистраль\"","phone":"(499) 251-27-32\, (499) 251-01-22","pos_beg":"21+800","pos_end":"108+000"}],"obsl_gibdd":[{"name":"8 СБ 2 СП ДПС «Южный» ГИБДД МО","phone":"8-496-753-07-61","address":"МО\, г. Подольск\, ул. Б. Серпуховская\, д. 199-в"}],"azs":[{"axis_name":"из Москвы","name":"Роснефть (Подсолнух)","pos":"25+100"},{"axis_name":"из Москвы","name":"Нефтьреммонтаж","pos":"26+770"},{"axis_name":"в Москву","name":"ЛУКОЙЛ","pos":"21+800"},{"axis_name":"в Москву","name":"Роснефть (Подсолнух)","pos":"24+900"},{"axis_name":"в Москву","name":"BP Connect","pos":"26+770"}],"camera":[{"name":"М2 \"Крым\" км 22+500 разд. (вид в Москву)","image_id":"2995523","load_time":"2012-04-26T15:30:00","pos":"22+500"},{"name":"М2 \"Крым\" км 25+150 разд. (вид в Москву)","image_id":"2995500","load_time":"2012-04-26T15:30:00","pos":"25+150"},{"name":"М2 \"Крым\" км 22+500 разд. (вид в Москву)","image_id":"2995458","load_time":"2012-04-26T15:12:00","pos":"22+500"},{"name":"М2 \"Крым\" км 25+150 разд. (вид в Москву)","image_id":"2995423","load_time":"2012-04-26T15:00:00","pos":"25+150"},{"name":"М2 \"Крым\" км 22+500 разд. (вид в Москву)","image_id":"2995365","load_time":"2012-04-26T14:30:00","pos":"22+500"},{"name":"М2 \"Крым\" км 25+150 разд. (вид в Москву)","image_id":"2992135","load_time":"2012-04-25T16:00:00","pos":"25+150"}],"sensor":[{"direction_r":"","direction_l":"в Москву","speed_r":"0","speed_l":"106","speed_avg_r":"0","speed_avg_l":"102","pos":"22+500"},{"direction_r":"из Москвы","direction_l":"","speed_r":"25","speed_l":"0","speed_avg_r":"91","speed_avg_l":"0","pos":"25+150"},{"direction_r":"","direction_l":"в Москву","speed_r":"0","speed_l":"105","speed_avg_r":"0","speed_avg_l":"97","pos":"25+150"}],"station":[{"direction_r":"От Москвы","direction_l":"К Москве","load_time":"2012-04-26T15:30:34","t":"24.1","rh":"26","ws":"4.6","wd":"0","wsmax":"7.8","ri":"0","rs_kod":"","rs_name":"","r_ts":"33.5","l_ts":"32.1","r_surf_name":"Сухо","l_surf_name":"Сухо","rain_code":"2","rain_name":"Ясно","wd_rumb":"С","pos":"25+150"}]} то есть меня интересует ХОТЯ-бы самый первый в списке (он же последний по времени) image_id, который далее надо запросить (они меняются постоянно по приходе нового изображения).ЧТО где надо написать? Буду чрезвычайно благодарен за потакание моим хотелкам ;) Заранее Большое человеческое СПАСИБО! (Идеально конечно было бы подтягивать из первого запроса (http://www.centrdor.ru/info/portal_s....ashx?q=camera) автоматом координаты меток в массив, по ним строить метки, после клика по метке передавать как сейчас lan и lon, и вот потом выбирать из полученного массива image_id и показывать изображение, но это уже потянет на денежные траты, я так понимаю....) |
Вроде сделал, но работает не так...
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript" charset="utf-8"></script> <script src="https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.min.js" type="text/javascript" charset="utf-8"></script> <script src="jquery.crossdomain.js" type="text/javascript"></script> <script type="text/javascript"> function drawCentrdorData(holder, name, id, lon, lan){ var placemark = new YMaps.Placemark(new YMaps.GeoPoint(lon, lan), {style: "default#campingIcon"}); //placemark.setBalloonOptions({}); placemark.setBalloonContent("<b>"+name+"</b><div><iframe height=\"420\" width=\"400\" scrolling=\"no\" frameborder=\"0\" src=\"http://www.centrdor.ru/info/portal_service/image.ashx?id="+id+" \"></iframe></div>"); //placemark.setBalloonOptions({maxWidth: 400, maxHeight: 3000}); holder.addOverlay(placemark); } // Создание обработчика для события window.onLoad window.onload = function () { // Создание экземпляра карты и его привязка к созданному контейнеру var map = new YMaps.Map( document.getElementById("YMapsID") ); // Установка для карты ее центра и масштаба map.setCenter(new YMaps.GeoPoint(37.617671,55.755768), 4); map.addControl(new YMaps.SearchControl({geocodeOptions: {geocodeProvider: "yandex#pmap"}})); YMaps.MapType.PMAP.getName = function () { return "Народная"; } map.addControl(new YMaps.TypeControl([ YMaps.MapType.MAP, YMaps.MapType.SATELLITE, YMaps.MapType.PHYBRID, YMaps.MapType.PMAP ], [0, 1, 2, 3])); map.addControl(new YMaps.ToolBar()); map.addControl(new YMaps.Zoom()); // map.addControl(new YMaps.MiniMap()); map.addControl(new YMaps.ScaleLine()); map.enableScrollZoom(); map.addControl(new YMaps.SearchControl()); var traffic = new YMaps.Traffic.Control(); map.addControl(traffic); function getCentrdorCam() { requestCrossDomainJSON( 'http://www.centrdor.ru/info/portal_service/query.ashx?q=camera', function(results) { var i, t = $('#camera'); for (var t = 0; t < results.camera.length; t++) { // alert(results.camera[t].road_name); idimg=getid(results.camera[t].pos_lat,results.camera[t].pos_lon); // idimg=getid(55.0437567958206,37.5590343300976); // alert("idimg=",idimg); drawCentrdorData(map,results.camera[t].road_name,idimg,results.camera[t].pos_lon, results.camera[t].pos_lat); } } ); return false; } function getid(plat,plon) { urlj='http://www.centrdor.ru/info/portal_service/query.ashx?q=pos&lat='+plat+'&lon='+plon; //alert(urlj); requestCrossDomainJSON( urlj, function(results) { var i, t = $('#camera'); return results.camera[0].image_id; } ); return false; } getCentrdorCam(); Юзаем YQL, Первая функция отрабатывает прекрасно, яхуапис возвращает координаты точек, они ставятся на карту,но! idimg (в getid) не возвращается. При этом если просто запустить getid с закоменченными координатами-все прекрасно возвращается. Что я сделал не так? ЗЫ Да, и может кто подскажет, можно ли избавиться от YQL в данном коНькретном случае кроссдоменного запроса к centrdor'у? |
Часовой пояс GMT +3, время: 23:19. |