var LON = '2.428462';
var LAT = '46.538192';

function initCarto() {
    OSM = L.tileLayer("http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", {
        attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
    });

    position = get_position() || default_gestionnaire_position();

    map = L.map("map", {
        center: new L.LatLng(position.lat, position.lon),
        zoom: position.zoom,
        layers: [OSM]
    });

    icon = L.icon({
        iconUrl: '/assets/marker-icon.png',
        //shadowUrl: 'leaf-shadow.png',

        iconSize: [34.48, 40], // size of the icon
        //shadowSize:   [50, 64], // size of the shadow
        iconAnchor: [20, 20] // point of the icon which will correspond to marker's location
        //shadowAnchor: [4, 62],  // the same for the shadow
        //popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
    });

    if (qp_active())
        display_qp(JSON.parse($("#quartier_prioritaires").val()));

    if (cadastre_active())
        display_cadastre(JSON.parse($("#cadastres").val()));

    freeDraw = new L.FreeDraw();
    freeDraw.options.setSmoothFactor(4);
    freeDraw.options.simplifyPolygon = false;

    map.addLayer(freeDraw);

    if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') {
        map.setZoom(18);

        $.each($.parseJSON($("#json_latlngs").val()), function (i, val) {
            freeDraw.createPolygon(val);
        });

        map.fitBounds(freeDraw.polygons[0].getBounds());
    }
    else if (position.lat == LAT && position.lon == LON)
        map.setView(new L.LatLng(position.lat, position.lon), position.zoom);

    add_event_freeDraw();
    add_event_search_address();
}

function default_gestionnaire_position() {
    return {lon: LON, lat: LAT, zoom: 5}
}

function get_external_data(latLngs) {
    if (qp_active())
        display_qp(get_qp(latLngs));

    if (cadastre_active()) {
        polygons = {"type": "FeatureCollection", "features": []};

        for (i = 0; i < latLngs.length; i++)
            polygons.features.push(feature_polygon_latLngs(latLngs[i]))

        cadastre_list = [{zoom_error: true}];

        if (turf_area(polygons) < 300000)
            cadastre_list = get_cadastre(latLngs);

        display_cadastre(cadastre_list);
    }
}

function feature_polygon_latLngs(coordinates) {
    return ({
        "type": "Feature",
        "properties": {},
        "geometry": {
            "type": "Polygon",
            "coordinates": [
                JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs']
            ]
        }
    })
}

function add_event_freeDraw() {
    freeDraw.on('markers', function (e) {
        $("#json_latlngs").val(JSON.stringify(e.latLngs));

        add_event_edit();

        get_external_data(e.latLngs);
    });

    $("#map").on('click', function(){
        freeDraw.setMode(L.FreeDraw.MODES.VIEW);
    });

    $("#new").on('click', function (e) {
        freeDraw.setMode(L.FreeDraw.MODES.CREATE);
    });

    $("#delete").on('click', function (e) {
        freeDraw.setMode(L.FreeDraw.MODES.DELETE);
    });
}

function add_event_edit (){
    $(".leaflet-container g path").on('click', function (e) {
        setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50);
    });
}

function get_position() {
    var position;

    $.ajax({
        url: '/users/dossiers/' + dossier_id + '/carte/position',
        dataType: 'json',
        async: false
    }).done(function (data) {
        position = data
    });

    return position;
}

function get_address_point(request) {
    $.ajax({
        url: '/ban/address_point?request=' + request,
        dataType: 'json',
        async: true
    }).done(function (data) {
        if (data.lat != null) {
            map.setView(new L.LatLng(data.lat, data.lon), data.zoom);
            //L.marker([data.lat, data.lon], {icon: icon}).addTo(map);
        }
    });
}

function jsObject_to_array(qp_list) {
    return Object.keys(qp_list).map(function (v) {
        return qp_list[v];
    });
}

function add_event_search_address() {
    $("#search_by_address input[type='address']").bind('typeahead:select', function (ev, seggestion) {
        get_address_point(seggestion['label']);
    });

    $("#search_by_address input[type='address']").keypress(function (e) {
        if (e.keyCode == 13)
            get_address_point($(this).val());
    });
}
@@ -450,16 +450,48 @@
 s: %5BOSM%5D
+,%0A        scrollWheelZoom: false
 %0A    %7D);
@@ -4520,20 +4520,21 @@
 s).val());%0A    %7D);%0A%7D
+%0A

Disable scrollwheel zoom on map