Skip to content

Instantly share code, notes, and snippets.

@SergeyNarozhny
Last active August 29, 2015 14:08
Show Gist options
  • Save SergeyNarozhny/176567f34c83ffe9f359 to your computer and use it in GitHub Desktop.
Save SergeyNarozhny/176567f34c83ffe9f359 to your computer and use it in GitHub Desktop.
Yandex map popup with required load (by modules)
var map = $("#map_wrapper"), editorParams = {
wayPointFinishDraggable: false,
addWayPoints: false,
editorDrawOver: false,
wayPointFinishIconLayout: "default#image",
wayPointFinishIconImageHref: '/new/include/img/footer-map-point.png',
wayPointFinishIconImageSize: [171, 48],
wayPointFinishIconImageOffset: [-55, -48],
};
ymaps.ready(function(){
var myMap = new ymaps.Map("map_wrapper", {
center: [59.90752358, 30.48338860],
controls: [],
behaviors: [],
zoom: 12
});
var toggleButton = new ymaps.control.Button({
data: { content: 'Hide map' },
options: { maxWidth: 200, float: 'right', selectOnClick: false }
});
var MultiRouterFirst = new ymaps.multiRouter.MultiRoute({ referencePoints: ["Some address", [59.913187, 30.595472]] }, editorParams);
MultiRouterFirst.model.setParams({ avoidTrafficJams: true }, true);
MultiRouterFirst.options.set({ wayPointStartIconColor: "#000088", routeActiveStrokeColor: "#000088", routeStrokeColor: "8080C4" });
var MultiRouterSecond = new ymaps.multiRouter.MultiRoute({ referencePoints: [[59.950698, 30.544703], [59.913187, 30.595472]] }, editorParams);
MultiRouterSecond.model.setParams({ avoidTrafficJams: true }, true);
MultiRouterSecond.options.set({ wayPointStartIconColor: "#ff0000", routeActiveStrokeColor: "#ff0000", routeStrokeColor: "ff8080" });
myMap.geoObjects.add(MultiRouterFirst);
myMap.geoObjects.add(MultiRouterSecond);
toggleButton.events.add('click', function(e){
map.toggleClass("open");
toggleButton.disable();
myMap.behaviors.disable(['drag', 'scrollZoom', 'multiTouch', 'dblClickZoom', 'rightMouseButtonMagnifier']);
myMap.controls.remove(ymaps.TrafficControl).remove(ymaps.ZoomControl).remove(ymaps.FullscreenControl).remove(toggleButton);
MultiRouterFirst.editor.stop();
MultiRouterSecond.editor.stop();
$("body").off('click.ymaps');
});
myMap.events.add('click', function(e){
if (map.css("opacity") < 0.5) {
map.toggleClass("open");
if (ymaps.MultiRouter) {
enableAllStuff();
} else {
ymaps.modules.require(['Placemark', 'geoObject.addon.balloon', 'geoObject.addon.hint', 'control.TrafficControl', 'control.ZoomControl', 'control.FullscreenControl'])
.spread(function (Placemark, Balloon, Hint, TrafficControl, ZoomControl, FullscreenControl) {
ymaps.TrafficControl = new TrafficControl();
ymaps.ZoomControl = new ZoomControl();
ymaps.FullscreenControl = new FullscreenControl();
ymaps.FullscreenControl.events.add('fullscreenenter', function(e){
toggleButton.options.set("visible", false);
});
ymaps.FullscreenControl.events.add('fullscreenexit', function(e){
toggleButton.options.set("visible", true);
});
enableAllStuff();
});
}
$("body").on('click.ymaps', function(e){
if (e.target.nodeName != "YMAPS") {
toggleButton.events.fire('click');
}
e.stopPropagation();
});
}
});
function enableAllStuff(){
toggleButton.enable();
MultiRouterFirst.editor.start();
MultiRouterSecond.editor.start();
myMap.controls.add(toggleButton).add(ymaps.TrafficControl, { float: "left" }).add(ymaps.ZoomControl).add(ymaps.FullscreenControl);
myMap.behaviors.enable(['drag', 'scrollZoom', 'multiTouch', 'dblClickZoom', 'rightMouseButtonMagnifier']);
myMap.setCenter([59.90752358, 30.48338860], 12);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment