Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   yandex maps+ видеокамеры с других сайтов? (https://javascript.ru/forum/css-html-firefox-mizilla/27835-yandex-maps-videokamery-s-drugikh-sajjtov.html)

MaxyMax 26.04.2012 16:15

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 и показывать изображение, но это уже потянет на денежные траты, я так понимаю....)

MaxyMax 16.05.2012 11:02

Вроде сделал, но работает не так...
 
<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, время: 19:31.