腾讯地图获取所选区域坐标

本文介绍了一款基于腾讯地图API的坐标获取工具,通过简单的HTML和JavaScript实现,支持点、线、多边形坐标的选取与显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

帮朋友做的,顺便记录下来,以后使用,主要是在腾讯地图上点选、主要是在屏幕点选坐标,线选坐标,多边形坐标,代码写的优点乱,也没时间整理了,下面是图,觉得适合自己了,再向后看代码。




首先是html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link href="style.css" rel="stylesheet" type="text/css">
    <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp"></script>
    <title>获取腾讯地图坐标</title>

</head>
<body>
<div id="container">
</div>
<div id="menu">
    <img src="img/scatter_plot_.png"  id="point" onclick="point()" title="点坐标">
    <img src="img/polyline.png" id="line"  onclick="line()" title="线坐标">
    <img src="img/rectangle_stroked.png" id="rectangle"  onclick="rectangle()" title="矩形坐标">
</div>
<div id="result">

</div>
<script src="getPoint.js"></script>
</body>
</html>


下面是js

var counts=0;
var type=0;
var markersArray=[];
var points=[];
var polygon;
var line;

var map = new qq.maps.Map(document.getElementById("container"),{
    //地图的默认鼠标指针样式
    draggableCursor: "crosshair",

    //拖动地图时的鼠标指针样式
    draggingCursor: "pointer"
});


var listener=qq.maps.event.addListener(
    map,
    'click',
    function(event) {
        counts=counts+1;
        var marker = new qq.maps.Marker({
            position: event.latLng,
            map: map,
            content:'点'+counts
        });
        var label=new qq.maps.Label({
            position: event.latLng,
            map: map,
            content:'点'+counts
        });
        markersArray.push(marker);
        markersArray.push(label);
        insetText("点"+counts+":经度"+event.latLng.getLng()+"纬度"+event.latLng.getLat()+"<br/>");
    }
);

document.getElementById("point").onclick=function () {
    if (type != 1) {
        reInit();
        type = 1;
    }
    qq.maps.event.removeListener(listener);
   listener=qq.maps.event.addListener(
        map,
        'click',
        function(event) {
            counts = counts + 1;
            addPoints(new qq.maps.LatLng(event.latLng.getLat(),event.latLng.getLng()));
        }
    );
};
document.getElementById("line").onclick=function () {
    if (type != 2) {
        reInit();
        type = 2;
    }

    qq.maps.event.removeListener(listener);
    listener=qq.maps.event.addListener(
        map,
        'click',
        function(event) {
            counts=counts+1;
            addPoints(new qq.maps.LatLng(event.latLng.getLat(),event.latLng.getLng()));
            points.push(new qq.maps.LatLng(event.latLng.getLat(),event.latLng.getLng()));

            if(counts>=2){
                if(counts>2){
                    line.setMap(null);
                }
                line = new qq.maps.Polyline({
                    path: points,
                    strokeColor: '#ffc64b',
                    strokeWeight: 5,
                    editable:false,
                    map: map
                });
            }


        }
    );
};
document.getElementById("rectangle").onclick=function () {
    if (type != 3) {
        reInit();
        type = 3;
    }
    qq.maps.event.removeListener(listener);
    listener=qq.maps.event.addListener(
        map,
        'click',
        function(event) {
            counts = counts + 1;
            addPoints(new qq.maps.LatLng(event.latLng.getLat(), event.latLng.getLng()));
            points.push(new qq.maps.LatLng(event.latLng.getLat(), event.latLng.getLng()));
            if (counts >=3) {
                if(counts>3){polygon.setMap(null)}
                 polygon = new qq.maps.Polygon({
                    path:points,
                    strokeColor: '#ffc64b',
                    strokeWeight: 5,
                    map: map
                });
            }
        }
    );
};
function addPoints(latLng) {
    var marker = new qq.maps.Marker({
        position: latLng,
        map: map,
        content:'点'+counts
    });
    var label=new qq.maps.Label({
        position: latLng,
        map: map,
        content:'点'+counts
    });
    markersArray.push(marker);
    markersArray.push(label);
    insetText("点"+counts+":经度"+latLng.getLng()+"纬度"+latLng.getLat()+"<br/>");
}

function reInit() {
    if (counts > 3 && type == 3) {
        polygon.setMap(null);
    }
    if (line) {
        line.setMap(null)
    }
    counts = 0;
    clearText();
    if (markersArray) {
        for ( var i in markersArray) {
            markersArray[i].setMap(null);
        }
    }
    points=[];
}

function insetText(str) {
    var result=document.getElementById("result");
    result.insertAdjacentHTML("beforeEnd",str);
}
function clearText() {
    var result=document.getElementById("result");
    result.innerHTML="";
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GIS开发者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值