search

Home  >  Q&A  >  body text

javascript - A problem about obtaining latitude and longitude from Baidu Map JS API

Currently there is such a requirement: Use the mouse to click on the map to determine the vertices to delineate a polygon, and write the corresponding longitude and latitude of the polygon to the database in order. This function needs to be integrated into the website.

My idea is this: directly use Baidu Map API to display the map. The key is to obtain the longitude and latitude of the mouse point (and then cover it with a layer of p or directly use the Add Overlay API), similar to this: http:// api.map.baidu.com/lbsa... But this is a product, and what I want to use is API

Currently no such API has been found on Baidu Maps. Do you have any solutions?

PHPzPHPz2744 days ago790

reply all(2)I'll reply

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:16:14

    I happened to get one before! Note that you need to go to Baidu to apply for a key yourself!

    <!DOCTYPE html>
    <html>
    <head>
        <style type="text/css">
            body, html{width: 100%;height: 100%;margin:0;}
            #allmap {width: 100%; height:100%; overflow: hidden;}
        </style>
      
        <script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=换成你的密钥"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
        <link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />
      
        <title>test</title>
    </head>
    <body> 
        <p id="allmap">    
            <p id="map" style="width:100%;height:100%;"></p>
        </p>
        <script>    
            var map = new BMap.Map('map', {enableMapClick:false});
            var poi = new BMap.Point(116.404, 39.915);
            map.centerAndZoom(poi, 11);
            map.enableScrollWheelZoom();
            
            var styleOptions = {
                strokeColor:"red",
                fillColor:"",
                strokeWeight: 1,
                strokeOpacity: 0.8,
                fillOpacity: 0.6,
                strokeStyle: 'dashed'
            }
            
            //实例化鼠标绘制工具
            var drawingManager = new BMapLib.DrawingManager(map, {
                isOpen: false,
                enableDrawingTool: true,
                drawingToolOptions: {
                    anchor: BMAP_ANCHOR_TOP_RIGHT,
                    offset: new BMap.Size(5, 5),
                    drawingModes :[
                        BMAP_DRAWING_RECTANGLE
                    ] 
                },
                rectangleOptions: styleOptions
            });  
                    
            drawingManager.addEventListener('overlaycomplete', function(e){
                var overlay = e.overlay,
                    handle;
                    
                handle = new BMap.Polygon(overlay.getPath(), {strokeWeight: 2, strokeColor: "#ff0000"});
                
                map.addOverlay(handle);
                alert("选取范围的基准点坐标为" + JSON.stringify(handle.getPath()));
            });
        </script>
    </body>
    </html>
    

    reply
    0
  • 为情所困

    为情所困2017-05-19 10:16:14

    Browsed Baidu Open Platform http://lbsyun.baidu.com/index...

    Isn’t this right?

    在标准的DOM事件模型中(DOM Level 2 Events),监听函数会得到一个事件对象e,在e中可以获取有关该事件的信息。同时在监听函数中this会指向触发该事件的DOM元素。 百度地图API的事件模型与此类似,在事件监听函数中传递事件对象e,每个e参数至少包含事件类型(type)和触发该事件的对象(target)。 API还保证函数内的this指向触发(同时也是绑定)事件的API对象。
    例如,通过参数e得到点击的经纬度坐标。
    var map = new BMap.Map("container");    
    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
    map.addEventListener("click", function(e){    
     alert(e.point.lng + ", " + e.point.lat);    
    });
    或者通过this得到地图缩放后的级别。
    var map = new BMap.Map("container");    
    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
    map.addEventListener("zoomend", function(){    
     alert("地图缩放至:" + this.getZoom() + "级");    
    });

    reply
    0
  • Cancelreply