腾讯地图画出区域获取该区域的范围坐标

腾讯地图画出区域获取该区域的范围坐标


效果如下:



代码如下,新建为html文件即可用:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>绘图工具</title>
<style type="text/css">
*{
    margin:0px;
    padding:0px;
}
body, button, input, select, textarea {
    font: 12px/16px Verdana, Helvetica, Arial, sans-serif;
}
</style>
<script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&libraries=drawing"></script>
<script>
var overlaysArray = []; //覆盖物容器,用于清除覆盖物
var radius = 1000;
var points = "";
var map;

function init() {
map = new qq.maps.Map(document.getElementById("container"), {
center : new qq.maps.LatLng(30.659922, 104.065631),
zoom : 14
});

 var drawingManager = new qq.maps.drawing.DrawingManager({
        drawingMode: qq.maps.drawing.OverlayType.MARKER,
        drawingControl: true,
        drawingControlOptions: {
            position: qq.maps.ControlPosition.TOP_CENTER,
            drawingModes: [
                qq.maps.drawing.OverlayType.MARKER,
                qq.maps.drawing.OverlayType.CIRCLE,
                qq.maps.drawing.OverlayType.POLYGON,        
                qq.maps.drawing.OverlayType.RECTANGLE
            ]
        },
        
        markerOptions:{
        visible:false
        },
        circleOptions: {
            fillColor: new qq.maps.Color(255, 208, 70, 0.3),
            strokeColor: new qq.maps.Color(88, 88, 88, 1),
            strokeWeight: 3,
            clickable: false
        }
    });
    drawingManager.setMap(map);


 qq.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
        if(event.type=="marker"){    
        clearOverlays(overlaysArray);  
    
          var latLng =event.overlay.getPosition();            
             lat = latLng.getLat().toFixed(5);
lng = latLng.getLng().toFixed(5);
var center = new qq.maps.LatLng(lat, lng);
var geocoder = new qq.maps.Geocoder();
geocoder.getAddress(latLng);
//设置服务请求成功的回调函数
geocoder.setComplete(function(result) {
doMarker(center, result.detail.address + latLng);
                     doCircle(center);
                     getPeopleDataByCircle(radius,lat+","+lng);
                 
});
//若服务请求失败,则运行以下函数
geocoder.setError(function() {
alert("出错了,请输入正确的经纬度!!!");
});
                
        }else if(event.type=="circle"){
         clearOverlays(overlaysArray);             
         overlaysArray.push(event.overlay);
          var latLng =event.overlay.getCenter();  
          var newRadius=event.overlay.getRadius();       
             lat = latLng.getLat().toFixed(5);
lng = latLng.getLng().toFixed(5);
var center = new qq.maps.LatLng(lat, lng);
var geocoder = new qq.maps.Geocoder();
geocoder.getAddress(latLng);
//设置服务请求成功的回调函数
geocoder.setComplete(function(result) {
doMarker(center, result.detail.address + latLng);                    
                     getPeopleDataByCircle(newRadius,lat+","+lng);
                 
});
//若服务请求失败,则运行以下函数
geocoder.setError(function() {
alert("出错了,请输入正确的经纬度!!!");
});
        
        }else if(event.type=="polygon"||event.type=="rectangle"){
           clearOverlays(overlaysArray);           
         overlaysArray.push(event.overlay);
         
      event.overlay.getPath().forEach(function(e){
           var lng=e.getLng();
           var lat=e.getLat();
        points+=lng+" "+lat+",";
      });
       points=points.substring(0, points.length-1);
       getPeopleDataByPolygon(points);
        }
    });
    
   
    


}





//清除覆盖物
function clearOverlays(overlaysArray) {
if (overlaysArray) {
for (i in overlaysArray) {
overlaysArray[i].setMap(null);
}
}
}


//画圆中心点
function doMarker(center, title) {
//创建一个Marker
var marker = new qq.maps.Marker({
//设置Marker的位置坐标
position : center,
//设置显示Marker的地图
map : map,
title : title
});


//设置Marker的可见性,为true时可见,false时不可见,默认属性为true
marker.setVisible(true);
//设置Marker的动画属性为从落下
marker.setAnimation(qq.maps.MarkerAnimation.DOWN);
overlaysArray.push(marker);
marker.setMap(map);


}


//画圆
function doCircle(center) {
var circle = new qq.maps.Circle({
map : map,
center : center,
radius : radius,
strokeWeight : 5
});
overlaysArray.push(circle);
circle.setMap(map);
}


//查询圆数据
function getPeopleDataByCircle(radius,center) {
//var circlePath="<%=basePath%>searchProjectInfo?op=circle&raidus="
//+ radius + "&point=" + center;
//jQuery.getJSON(circlePath, function(data) {
//showPeopleData(data);
//});

alert("圆形中心为:"+center+"半径为:"+radius);
}



//查询多边形数据
function getPeopleDataByPolygon(points) {
//var polygonPath="<%=basePath%>searchProjectInfo?op=polygon&points="
//+ points;
//jQuery.getJSON(polygonPath, function(data) {
//showPeopleData(data);
//});

alert("多边形路径为:"+points);

}

</script>
</head>
<body οnlοad="init()">
<div>
<div style="width:603px;height:300px" id="container"></div>
</body>
</html>


  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
获取腾讯地图上的点击坐标可以通过以下步骤实现: 1. 在 HTML 页面中添加腾讯地图的 JavaScript API 脚本。 ``` <script src="//map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script> ``` 其中,YOUR_KEY 是你在腾讯地图开放平台申请的 API 密钥。 2. 创建地图容器 DIV 元素和初始化地图对象。 ``` <div id="map"></div> <script> var map = new qq.maps.Map(document.getElementById("map"), { center: new qq.maps.LatLng(39.916527, 116.397128), zoom: 13 }); </script> ``` 这里的 center 和 zoom 分别表示地图的中心点和缩放级别。 3. 绑定地图的 click 事件,获取点击坐标。 ``` qq.maps.event.addListener(map, 'click', function(event) { var latLng = event.latLng; console.log('点击坐标:', latLng.getLat(), latLng.getLng()); }); ``` 这里的 event.latLng 表示点击事件发生的经纬度坐标,通过 getLat() 和 getLng() 方法可以分别获取纬度和经度值。 完整的代码示例: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>腾讯地图获取点击坐标</title> <script src="//map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script> </head> <body> <div id="map" style="width: 100%; height: 500px;"></div> <script> var map = new qq.maps.Map(document.getElementById("map"), { center: new qq.maps.LatLng(39.916527, 116.397128), zoom: 13 }); qq.maps.event.addListener(map, 'click', function(event) { var latLng = event.latLng; console.log('点击坐标:', latLng.getLat(), latLng.getLng()); }); </script> </body> </html> ``` 注意,此示例中的 YOUR_KEY 需要替换为你在腾讯地图开放平台申请的 API 密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小凡vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值