<script type="text/javascript">
$(function(){
var maps = new Array(
var ml = new Array(
function loadMap(id, url) {
maps[id] = new YMaps.Map(YMaps.jQuery('#' + id)[0]
maps[id].addControl(new YMaps.Zoom()
maps[id].addControl(new YMaps.TypeControl()
ml[id] = new YMaps.YMapsML(url);
maps[id].addOverlay(ml[id]
YMaps.Events.observe(ml[id], ml[id].Events.Load, function (ml) {
maps[id].setBounds(ml.view.boundedBy);
if (id == 'map-example-shop_delivery') {
maps['map-example-shop_delivery'].setZoom(10);
}
}
YMaps.Events.observe(maps[id], maps[id].Events.Redraw, function (map) {
map.setBounds(ml[id].view.boundedBy);
}
}
function createMap(id) {
maps[id] = new YMaps.Map(YMaps.jQuery(ap-example-shop_delivery)[0]
maps[id].addControl(new YMaps.Zoom()
// maps[id].addControl(new YMaps.TypeControl()
maps[id].setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
}
$('.b-map-example').each(function(i){
if ($(this).attr('ymapsml')) {
loadMap($(this).attr('id'), $(this).attr('ymapsml')
}
}
var geoResult;
var router;
// Функция для отображения результата геокодирования
// Параметр value - адрес объекта для поиска
function showAddress (value) {
var map = maps['map-example-shop1'];
// Удаление предыдущего результата поиска
map.removeOverlay(geoResult);
// Запуск процесса геокодирования
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds(), strictBounds: true}
// Создание обработчика для успешного завершения геокодирования
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
// Если объект был найден, то добавляем его на карту
// и центрируем карту по области обзора найденного объекта
if (this.length()) {
geoResult = this.get(0);
coord = geoResult.getGeoPoint(
geoResult.setBalloonContent(geoResult.text + '<br></br><span style="font-weight: bold; font-style: italic">извините, неправильный адрес</span>');
ml['map-example-shop1'].forEach(function (obj, objIndex, group) {
obj.forEach(function (obj, objIndex, group) {
if (!obj.metaDataProperty.AnyMetaData.icon){
if (obj.contains(coord)){
geoResult.setBalloonContent(geoResult.text + '<br></br><span style="font-weight: bold; font-style: italic">' + obj.description + '</span>');
}
}
})
}
map.addOverlay(geoResult);
geoResult.openBalloon(
}else {
$('#example-shop1').siblings('.geocoder-error').show(
}
}
// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
})
}
function getRoute(value) {
var map = maps['map-example-shop_delivery'];
// Удаление предыдущего результата поиска
map.removeOverlay(geoResult);
map.removeOverlay(router);
// Запуск процесса геокодирования
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);
coord = geoResult.getGeoPoint(
geoResult.setBalloonContent(geoResult.text);
ml['map-example-shop_delivery'].forEach(function (obj, objIndex, group) {
obj.forEach(function (obj, objIndex, group) {
router = new YMaps.Router([obj.getGeoPoint(), geoResult.getGeoPoint()]
map.addOverlay(router);
YMaps.Events.observe(router, router.Events.Success, function () {
geoResult.setBalloonContent(geoResult.text + '<br></br><span style="font-weight: bold; font-style: italic">Расстояние: ' + Math.round(router.getDistance() / 1000) + 'км.</span>');
}
})
}
map.addOverlay(geoResult);
geoResult.openBalloon(
}else {
$('#example-shop_delivery').siblings('.geocoder-error').show(
}
}
// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
})
}
if ($('#map-example-shop_delivery')[0]) {
YMaps.Events.observe(maps['map-example-shop_delivery'], maps['map-example-shop_delivery'].Events.Click, function (map, e) {
getRoute(e.getCoordPoint()
})
$('#example-shop_delivery').submit(function(){
var address = ($('#example-shop_delivery .b-form-input').bem('b-form-input').val() != '') ?
$('#example-shop_delivery .b-form-input').bem('b-form-input').val() : $('#example-shop_delivery .b-form-input label').text()
getRoute(address);
return false;
})
$('#example-shop_delivery .b-form-input').click(function(){
$('#example-shop1').siblings('.geocoder-error').hide(
})
}
BEM.DOM.decl('b-tabbed-pane', {
_onSelectTab : function(e, data) {
this.__base.apply(this, arguments);
maps[$('.b-map-example').eq(this.elem('tab').index(data.current)).attr('id')].redraw(
}
}
})
</script>