<!DO CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ht ml xmlns="http://www.w3.org/1999/xhtml">
<head>
<met a http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<met a http-equiv="X-UA-Compatible" content="IE=7">
<st yle type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map { height: 100% }
</style>
<sc ript src="https://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"
type="text/javascript"></sc ript>
<sc ript src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></sc ript>
<sc ript type="text/javascript">
var index = 1;
var myMap;
var route;
var clusterer;
var PointArray = [];
var noclick = false;
ymaps.ready(init);
function init(){
myMap = new ymaps.Map ("map", {
center: [55.734456, 37.554421],
zoom: 12
});
myMap.behaviors.enable('scrollZoom');
myMap.behaviors.disable('dblClickZoom');
myMap.controls.add('mapTools');
myMap.controls.add('zoomControl');
myMap.controls.add('scaleLine');
myMap.controls.add('miniMap');
myMap.controls.add('trafficControl');
myMap.events.add('click', function (e) {
if (!noclick) {
addMarker(e.get('coordPosition'));
}else{
noclick = false;
}
});
myMap.events.add('drag end', function (e) {
noclick = true;
document.getElementById('CoordX').value = "0";
document.getElementById('CoordY').value = "0";
document.getElementById('Adress').value = "0";
});
// создадим кластеризатор и запретим приближать карту при клике на кластеры
clusterer = new ymaps.Clusterer({clusterDisableClickZoom: true, synchAdd: true});
myMap.geoObjects.add(clusterer);
}
function addMarker(coordPosition){
myPlacemark = createPlacemark(coordPosition);
myMap.geoObjects.add(myPlacemark);
// Слушаем событие окончания перетаскивания на метке.
myPlacemark.events.add('dragend', function () {
getAddress(myPlacemark.geometry.getCoordinates());
});
getAddress(coordPosition);
document.getElementById('CoordX').value = coordPosition[0].toPrecision(15);
document.getElementById('CoordY').value = coordPosition[1].toPrecision(15);
index++;
}
// Создание метки
function createPlacemark(coords) {
return new ymaps.Placemark(coords, {
iconContent: 'поиск...'
}, {
preset: 'islands#violetStretchyIcon',
draggable: true
});
}
// Определяем адрес по координатам (обратное геокодирование)
function getAddress(coords) {
myPlacemark.properties.set('iconContent', 'поиск...');
ymaps.geocode(coords).then(function (res) {
var firstGeoObject = res.geoObjects.get(0);
myPlacemark.properties
.set({
iconContent: firstGeoObject.properties.get('name'),
balloonContent: firstGeoObject.properties.get('text')
});
document.getElementById('Adress').value = firstGeoObject.properties.get('text');
});
}
function calcRoute(options){
ymaps.route(options, {
// Опции маршрутизатора
mapStateAutoApply: true, // автоматически позиционировать карту
avoidTrafficJams: false // Не учитывать пробки
}).then(
function (router) {
route = router;
myMap.geoObjects.add(route);
var summaryPanel = document.getElementById("directions_panel");
summaryPanel.innerHTML = "";
// Получаем массив путей.
for (var i = 0; i < route.getPaths().getLength(); i++) {
var firstPath = route.getPaths().get(i); // Путь
var firstPathLength = firstPath.getLength()/1000; // Длина пути
//coords = firstPath.geometry.getCoordinates(); //Координаты
//summaryPanel.innerHTML += 'опЗаполнитьМаршрут("' + route.getPaths().getMap().properties + '","' + firstPathLength + '","' +coords[0][0]+ '","' +coords[0][1]+ '","' +coords[1][0]+ '","' +coords[1][1] +'");';
summaryPanel.innerHTML += 'опЗаполнитьМаршрут("' + firstPathLength + '");';
}
//заполняем и сохраняем инфо про маршрут
document.getElementById('RouteInfo').value = "Длина маршрута - " + route.getHumanLength() + ". Время - " + route.getHumanJamsTime();
//генерация события для перехвата в 1С
var evt = document.createEventObject();
document.body.fireEvent('ondatasetcomplete', evt);
},
function (error) {
alert("Возникла ошибка: " + error.message);
});
}
function Reset(){
// Найдём на карте геообъект по его id
myMap.geoObjects.each(function (geoObject) {
myMap.geoObjects.remove(geoObject);
});
PointArray = [];
index = 1;
}
function FindAdres(Adres){
Reset();
var myGeocoder = ymaps.geocode(Adres);
myGeocoder.then(
function (res){
var firstGeoObject = res.geoObjects.get(0);
if(firstGeoObject != null){
myMap.panTo(
// Координаты нового центра карты
firstGeoObject.geometry.getCoordinates(), {
/* Опции перемещения:
разрешить уменьшать и затем увеличивать зум
карты при перемещении между точками
*/
flying: true
}
);
myPlacemark = new ymaps.Placemark(firstGeoObject.geometry.getCoordinates(), {
// Свойства
// Текст метки
iconContent: Adres
}, {
// Опции
// Иконка метки будет растягиваться под ее контент
preset: 'twirl#blueStretchyIcon'
});
myMap.geoObjects.add(myPlacemark);
}else{
alert("Ничего не найдено");}
}
);
}
function ReverseSearchAdres(CoordX, CoordY, Adres){
var CoordPosition = [CoordX, CoordY];
myMap.panTo(
// Координаты нового центра карты
CoordPosition, {
/* Опции перемещения:
разрешить уменьшать и затем увеличивать зум
карты при перемещении между точками
*/
flying: true
}
);
myPlacemark = new ymaps.Placemark(CoordPosition, {
// Свойства
// Текст метки
iconContent: Adres
}, {
// Опции
// Иконка метки будет растягиваться под ее контент
preset: 'twirl#blueStretchyIcon'
});
myMap.geoObjects.add(myPlacemark);
}
function addToPointArray(CoordX, CoordY, ID, Text){
var point = new ymaps.GeoObject({
geometry: {type: "Point", coordinates: [CoordX, CoordY]},
properties: {
clusterCaption: ID,
balloonContentBody: Text
}
});
PointArray.push(point);
}
function drawCluster(){
clusterer.add(PointArray);
myMap.geoObjects.add(clusterer);
}
function createPolygon(ArrayPoint, Name, color) {
// Создаем многоугольник
myPolygon = new ymaps.Polygon([
// Координаты вершин внешней границы многоугольника.
ArrayPoint
], {
//Свойства
hintContent: Name
}, {
// Опции.
// Цвет заливки (зеленый)
fillColor: color,
// Цвет границ (синий)
strokeColor: '#0000FF',
// Прозрачность (полупрозрачная заливка)
opacity: 0.6,
// Ширина линии
strokeWidth: 5,
// Стиль линии
strokeStyle: 'shortdash'
});
myMap.geoObjects.add(myPolygon);
}
function WebClientClick() {
//очистка перед кликом координат, иначе после клика в упр. формах идет считывание координат
document.getElementById('CoordX').value = "0";
document.getElementById('CoordY').value = "0";
var WebClientOperation = document.getElementById("WebClientOperation").value;
//alert(WebClientOperation);
switch (WebClientOperation) {
case "0": // ничего не делаем
var a = 1;
default: // запускаем функцию
eval(WebClientOperation);
}
document.getElementById('WebClientOperation').value = "0";
}
</sc ript>
</head>
<body>
<div id="map" style="width:100%; height:100%"></div>
<div id="directions_panel" style="MARGIN: 20px; DISPLAY: none; BACKGROUND-COLOR: #ffee77"></div>
<input type="hidden" id="CoordX" name="CoordX" value="0"></input>
<input type="hidden" id="CoordY" name="CoordY" value="0"></input>
<input type="hidden" id="Adress" name="Adress" value="0"></input>
<input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input>
<input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input>
<input type="hidden" id="WebClient" name="WebClient" on click="WebClientClick();"></input>
</body>
</html> |