传单标记拖动移动地图

时间:2016-01-15 09:16:13

标签: leaflet openstreetmap marker drag

我正在使用leaflet工作OSM ..我启用拖动:我的目的地标记上为true,因为我需要它可拖动,但拖动标记我的MAP也会移动。有一种方法我只能移动标记。 / p>

    $(document).ready(function()
    {   
        homepg();
    });
    var cab_map = null;
    function homepg()
    {
        var str = '';
        var markers = new L.MarkerClusterGroup();
        var lat = '19.068246';
        var lng = '72.850638';
        cab_map = ddmap.init('mapdivcab',[lat,lng],14);
        ddmap.getDirection(13.039680,77.580214,13.040850,77.625532,cab_map,'lmenu');
    }

 getDirection: function(flat,flon,tlat,tlon,map,mapdv)
{
    this.dirMap = map;
    this.mapDiv = mapdv;
    this.sourceLatLng = new L.LatLng(flat,flon);
    this.targetLatLng = new L.LatLng(tlat,tlon);

    if(this.fScript) 
        head.removeChild(fScript);
    fScript = document.createElement('script');
    fScript.setAttribute("type","text/javascript");
    fScript.setAttribute("src", ddmap.serverUrl+"jsonp=ddmap.updateAddressFrom/nearbylocation/"+flat.toFixed(6).replace('.','')+"/"+flon.toFixed(6).replace('.','')+"/1?json_callback=%jsonp");
    document.getElementsByTagName("head")[0].appendChild(fScript);

    if(this.tScript) 
        head.removeChild(tScript);
    tScript = document.createElement('script');
    tScript.setAttribute("type","text/javascript");
    tScript.setAttribute("src", ddmap.serverUrl+"jsonp=ddmap.updateAddressTo/nearbylocation/"+tlat.toFixed(6).replace('.','')+"/"+tlon.toFixed(6).replace('.','')+"/1?json_callback=%jsonp");
    document.getElementsByTagName("head")[0].appendChild(tScript);

    if(this.currentScript) 
        head.removeChild(currentScript);
    currentScript = document.createElement('script');
    currentScript.setAttribute("type","text/javascript");
    currentScript.setAttribute("src", "viaroute?z=13&output=json&jsonp=ddmap.showRoute&loc="+flat+","+flon+"&loc="+tlat+","+tlon+"&instructions=true");
    document.getElementsByTagName("head")[0].appendChild(currentScript);
}
    showRoute: function(response) {
    var geometry = this._decode(response.route_geometry, 6);
    var route = new L.Polyline( [], {dashArray:""} );
    route.setLatLngs( geometry );
    var sIcon = L.icon({iconUrl:this.imageHost+"/images/marker-source.png",iconAnchor:[10,30],shadowUrl: this.imageHost+'/images/marker-shadow.png'});
    var tIcon = L.icon({iconUrl:this.imageHost+"/images/marker-target.png",iconAnchor:[10,30],shadowUrl: this.imageHost+'/images/marker-shadow.png'});
    mrkrSrc = L.marker(this.sourceLatLng, {icon: sIcon});
    mrkrTgt = L.marker(this.targetLatLng, {icon: tIcon,draggable:'true'});
    if(this.mainLayer)
        this.dirMap.removeLayer(this.mainLayer);

    this.mainLayer = L.layerGroup([mrkrSrc, mrkrTgt])
    .addLayer(route)
    .addTo(this.dirMap);
    var bounds = new L.LatLngBounds(this.sourceLatLng, this.targetLatLng);
    this.dirMap.fitBounds(bounds);
    this.showRouteDesc(response,geometry);

    //
        mrkrTgt.on('drag', function(event){
            var marker = event.target;
            var dst = marker.getLatLng();
            var src = mrkrSrc.getLatLng();         
            ddmap.getroute(src.lat,src.lng,dst.lat,dst.lng,cab_map,'lmenu');//instead of calling getDriection i m calling this function
    });

//此函数与getDirection相同,但我删除了一些代码,认为这不是必需的,而且它正在制作'拖动事件'粗暴和时间

getroute: function(flat,flon,tlat,tlon,map,mapdv)
{
    this.dirMap = map;
    this.mapDiv = mapdv;
    this.sourceLatLng = new L.LatLng(flat,flon);
    this.targetLatLng = new L.LatLng(tlat,tlon);    
    if(this.currentScript) 
        head.removeChild(currentScript);
    currentScript = document.createElement('script');
    currentScript.setAttribute("type","text/javascript");
    currentScript.setAttribute("src", "viaroute?z=13&output=json&jsonp=ddmap.showRoute&loc="+flat+","+flon+"&loc="+tlat+","+tlon+"&instructions=true");
    document.getElementsByTagName("head")[0].appendChild(currentScript);
}

0 个答案:

没有答案