//файл var map = false; var geoResult; var mas_point_add_to_maps = new Array(); var drag_placemark = false; var go_function_begin_init_maps = false; var go_function_end_init_maps = false; var s_name_form_bind_maps = ""; var open_first_point_maps = false; var set_zoom_maps_point = false; var mas_point_maps = []; function init_yandex_maps() { map = new YMaps.Map(document.getElementById("maps_canvas")); set_longitude_yandex_maps=s_longitude_yandex_maps; set_latitude_yandex_maps=s_latitude_yandex_maps; set_zoom_yandex_maps=s_zoom_yandex_maps; if ( go_function_begin_init_maps ) { go_function_begin_init_maps(); } map.setCenter(new YMaps.GeoPoint(set_longitude_yandex_maps, set_latitude_yandex_maps), set_zoom_yandex_maps);// долгота, широта | longitude - долгота, latitude - широта map.setType(YMaps.MapType.MAP);//MAP , SATELLITE , HYBRID map.addControl(new YMaps.TypeControl()); //тип карты //map.addControl(new YMaps.ToolBar()); //панель инструментов map.addControl(new YMaps.Zoom()); //масштабирование //map.addControl(new YMaps.MiniMap()); //обзорная карта //map.addControl(new YMaps.ScaleLine()); //масштабная линейка if ( go_function_end_init_maps ) { go_function_end_init_maps(); } } function on_show_box_maps() { on_show_yandex_maps(); } function on_hide_box_maps() { on_hide_yandex_maps(); } function on_show_yandex_maps() { document.getElementById("box_maps_canvas").style.display = "block"; init_yandex_maps(); } function on_hide_yandex_maps() { document.getElementById("box_maps_canvas").style.display = "none"; drag_placemark = false; if ( map ) { //map.destructor(); //map = false; } } function set_init_maps_drag_point_maps() { obj_form_create = document.forms[s_name_form_bind_maps]; var form_lng_geo = parseFloat(obj_form_create.longitude.value); var form_lat_geo = parseFloat(obj_form_create.latitude.value); if ( form_lng_geo && form_lat_geo ) { set_longitude_yandex_maps=form_lng_geo; set_latitude_yandex_maps=form_lat_geo; //set_zoom_yandex_maps=zoom_yandex_maps; //alert(set_longitude_yandex_maps + " " + set_latitude_yandex_maps); } } function set_drag_point_maps() { var obj_form_create = document.forms[s_name_form_bind_maps]; var start_longitude_yandex_maps = s_longitude_yandex_maps; var start_latitude_yandex_maps = s_latitude_yandex_maps; var form_lng_geo = parseFloat(obj_form_create.longitude.value); var form_lat_geo = parseFloat(obj_form_create.latitude.value); YMaps.Events.observe(map,map.Events.Click, function (obj,mEvent) { //alert(mEvent.getGeoPoint()); create_drag_placemark(1,1,mEvent.getGeoPoint()); }); if ( form_lng_geo && form_lat_geo ) { start_longitude_yandex_maps = form_lng_geo; start_latitude_yandex_maps = form_lat_geo; //alert(form_lng_geo + " " + form_lat_geo); create_drag_placemark(start_longitude_yandex_maps,start_latitude_yandex_maps,false); } } function create_drag_placemark(longitude,latitude,geoPoint) { obj_form_create = document.forms[s_name_form_bind_maps]; var setPointPlacemark = false; if ( geoPoint ) { setPointPlacemark = geoPoint; longitude = geoPoint.getLng(); latitude = geoPoint.getLat(); } else { setPointPlacemark = new YMaps.GeoPoint(longitude, latitude); } if ( drag_placemark ) { //alert("уже есть метка!"); drag_placemark.setGeoPoint(setPointPlacemark); } else { drag_placemark = new YMaps.Placemark(setPointPlacemark, {draggable: true , hasBalloon: false , style: "default#anchorIcon" }); drag_placemark.name = "Метка"; drag_placemark.description = "Перетащите эту метку в нужное место"; map.addOverlay(drag_placemark); } obj_form_create.longitude.value=longitude; obj_form_create.latitude.value=latitude; YMaps.Events.observe(drag_placemark, drag_placemark.Events.DragEnd, function (obj,mEvent) { //alert(obj.getGeoPoint()); var GeoKoor = obj.getGeoPoint(); //alert(GeoKoor.getLng()); //alert(GeoKoor.getLat()); obj_form_create.longitude.value=GeoKoor.getLng(); obj_form_create.latitude.value=GeoKoor.getLat(); } ); } function set_mas_point_to_maps() { //должен быть определен массив точек mas_point_maps var n,one_point; for (n=0;n < mas_point_maps.length; n++ ) { one_point = mas_point_maps[n]; if ( !one_point["lng"] || !one_point["lat"] ) continue; var placemark = new YMaps.Placemark(new YMaps.GeoPoint(one_point["lng"], one_point["lat"]) );//, {draggable: true , hasBalloon: false}); placemark.name = "

"+ decodeURIComponent(one_point["name"])+"

"; //var short_description =decodeURIComponent(one_point["short_description"]); placemark.description = ""; map.addOverlay(placemark); mas_point_add_to_maps[mas_point_add_to_maps.length] = placemark; } if ( typeof( open_first_point_maps ) != "undefined" && open_first_point_maps && mas_point_add_to_maps.length > 0 ) { mas_point_add_to_maps[0].openBalloon(); } } function set_init_maps_mas_point_maps() { if ( typeof( set_zoom_maps_point ) != "undefined" ) { set_zoom_yandex_maps=s_zoom_yandex_maps_point; } //должен быть определен массив точек mas_point_maps, центрирование карты будет по первой точке if ( mas_point_maps && mas_point_maps.length > 0 ) { var lng_geo = mas_point_maps[0]["lng"]; var lat_geo = mas_point_maps[0]["lat"]; if ( lng_geo && lat_geo ) { set_longitude_yandex_maps=lng_geo; set_latitude_yandex_maps=lat_geo; //set_zoom_yandex_maps=zoom_yandex_maps; //alert(set_longitude_yandex_maps + " " + set_latitude_yandex_maps); } } } function open_num_mas_point_to_maps( num_i ) { if ( mas_point_add_to_maps && mas_point_add_to_maps[num_i] ) { mas_point_add_to_maps[num_i].openBalloon(); if ( document.getElementById("maps_canvas") ) { document.getElementById("maps_canvas").scrollIntoView(true); //document.getElementById("maps_canvas").scrollBy(-5,0); window.scrollBy(0,-7); } } } function showAddress (value) { map.removeOverlay(geoResult); var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}); YMaps.Events.observe(geocoder, geocoder.Events.Load, function () { if (this.length()) { geoResult = this.get(0); //alert(geoResult.getGeoPoint()); create_drag_placemark(1,1,geoResult.getGeoPoint()); //map.addOverlay(geoResult); //map.setBounds(geoResult.getBounds()); //geoResult.openBalloon(); // Открываем балун map.panTo(geoResult.getGeoPoint() ); } else { alert("Ничего не найдено!") } }); }