Построение карты с помощью API Яндекс.Карты
<script type="text/j-avascript" src="http://api-maps.yandex.ru/2.1/?coordorder=longlat&lang=ru-RU"></script> <div id="frameForMap" style="width:600px;height:450px;"></div> <script type="text/j-avascript"> ymaps.ready(function(){ var gc = ymaps.geocode(document.getElementById('addressForMap').innerHTML, {results: 1, json: true}); gc.then(function(res){ var coord = res.GeoObjectCollection.featureMember[0].GeoObject.Point.pos.split(' '); var map = new ymaps.Map('frameForMap', { center: coord, zoom: 15 }); var pm = new ymaps.Placemark(coord, { hintContent: document.getElementById('addressForMap').innerHTML, balloonContent: document.getElementById('balloonContent').innerHTML }); map.geoObjects.add(pm); var lower = res.GeoObjectCollection.featureMember[0].GeoObject.boundedBy.Envelope.lowerCorner.split(' '); var upper = res.GeoObjectCollection.featureMember[0].GeoObject.boundedBy.Envelope.upperCorner.split(' '); var bnds = [lower,upper]; var map2 = new ymaps.Map('townMap', { bounds: bnds }); map2.setZoom(map2.getZoom()+1); map2.geoObjects.add(new ymaps.Placemark(map2.getCenter())); }, function(err){ }); }); </script>
Добавление на карту поиска с возможностью перетягивания метки
function init () { var myMap = new ymaps.Map("YMapsIDnc_map", { center: [coord_y, coord_x], zoom: zoom_ }); var myPlacemark = new ymaps.Placemark([coord_y, coord_x], { hintContent: content_title }, { draggable: true }); var lastPM = myPlacemark; myMap.controls.add("mapTools") .add("zoomControl") .add("typeSelector"); var srcControl = new ymaps.control.SearchControl(); myMap.controls.add(srcControl); srcControl.events.add("resultshow",function(e){ srcControl.getResult(e.originalEvent.resultIndex).then(function(result){ chMap(result); result.options.set("draggable", true); result.events.add("dragend", function (e) { chMap(result); }); }); }); myPlacemark.events.add("dragend", function (e) { chMap(myPlacemark); }); myMap.geoObjects.add(myPlacemark); myMap.events.add("boundschange", function (e) { chMap(lastPM); }); function chMap(geo){ lastPM = geo; document.getElementById("nc_map").value=geo.geometry.getCoordinates()+"::"+myMap.getZoom(); } } // Поиск координат и оптимального зума по адресу: ymaps.ready(function(){
var address = '.json_encode($address).';
var gc = ymaps.geocode(address, {results: 1});
gc.then(function(res){
if(res.geoObjects.getLength()){
var coord = res.geoObjects.get(0).geometry.getCoordinates();
ymaps.getZoomRange("yandex#map", coord).then(function(zooms){
var map = new ymaps.Map("YMapsID'.$field->engtitle.'", {
center: coord,
zoom: zooms[1]-2,
controls: ["zoomControl", "trafficControl", "typeSelector", "rulerControl", "fullscreenControl", "geolocationControl"]
});
});
}
});
}); // Поиск области с оптимальным зумом (в примере - город) var gc = ymaps.geocode('Симферополь', {results: 1, kind: 'locality', json: true}); gc.then(function(res){ if(res.GeoObjectCollection.featureMember.length > 0){ var envelope = res.GeoObjectCollection.featureMember[0].GeoObject.boundedBy.Envelope; var lowerCorner = envelope.lowerCorner.split(' ').reverse(); var upperCorner = envelope.upperCorner.split(' ').reverse(); map = new ymaps.Map("map_id", { bounds: [lowerCorner, upperCorner] }); } });
Карта по клику во всплывающем окне (первая функция - обработчик события клика):
var myCompOnMapAddr = ""; function myCompShowOnMap(){ var city = jQuery('#mycomp_nc_city option:selected').text(); var addr = jQuery('#mycomp_nc_addr').val(); if(addr.indexOf(city) == -1){ addr = 'г. '+city+', '+addr; } myCompOnMapAddr = addr; jQuery('#sbox-overlay, #sbox-window').remove(); SqueezeBox.build(); SqueezeBox.open('', {onOpen: myCompOnMapOpen, size: {x: 800, y: 600}}); } function myCompOnMapOpen(){ ymaps.ready(function(){ var address = myCompOnMapAddr; var gc = ymaps.geocode(address, {results: 1}); gc.then(function(res){ if(res.geoObjects.getLength()){ var coord = res.geoObjects.get(0).geometry.getCoordinates(); ymaps.getZoomRange("yandex#map", coord).then(function(zooms){ var map = new ymaps.Map("sbox-content", { center: coord, zoom: zooms[1]-2 }); }); } }); }); }