1. 程式人生 > >騰訊地圖JSAPI開發demo 定位,查詢

騰訊地圖JSAPI開發demo 定位,查詢

data doctype ans 轉譯 暫時 地址查詢 erro 列表 事件

1.IP定位切換

2.點擊坐標獲取地點

3.查詢地點切換坐標

技術分享圖片

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>簡單地圖</title>
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <style type="text/css">
        html,
        body {
            width: 100%;
            height: 100%;
        }

        * {
            margin: 0px;
            padding: 0px;
        }

        body,
        button,
        input,
        select,
        textarea {
            font: 12px/16px Verdana, Helvetica, Arial, sans-serif;
        }

        p {
            width: 603px;
            padding-top: 3px;
            overflow: hidden;
        }

        .btn {
            width: 142px;
        }

        #container {
            height: 90%;
            width: 99%;
            text-align: center;
        }
    </style>
    <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&key=MJABZ-YGGL5-IBIIN-Q5Z45-FMOI7-VIBGN"></script>
    <script src="jquery.min.js"></script>
    <script>
        //1. 通過傳入地址 定位到地址
        //2. 通過查詢地址 地圖定位到地址
        //3. 通過地圖點擊定位,獲取到具體地址

        var MAP_GLOAP = {
            CURR_MAP: [28.21409, 112.89173], //當前坐標
            CURR_ADR: null, //當前地址
            KEY: ‘MJABZ-YGGL5-IBIIN-Q5Z45-FMOI7-VIBGN‘,
            map: null, //地圖對象
            Maker: null, //標記(單個)
            SearchInput: "#mapSearch",//查詢文本框
            SearchBT: "#mapSearchBT" //查詢按鈕

        };
        //刷新查詢列表
        var RefSearch = function () {
            console.log(MAP_GLOAP);
            $(MAP_GLOAP.SearchInput).val(MAP_GLOAP.CURR_ADR);
        };
        //增加打標
        var AddMark = function () {
            var center = new qq.maps.LatLng(MAP_GLOAP.CURR_MAP[0], MAP_GLOAP.CURR_MAP[1]);
            if (MAP_GLOAP.Maker) {
                MAP_GLOAP.Maker.setMap(null);
            }
            MAP_GLOAP.Maker = new qq.maps.Marker({
                position: center,
                map: MAP_GLOAP.map
            });

        };
        //刷新坐標
        var RefMap = function () {
            var center = new qq.maps.LatLng(MAP_GLOAP.CURR_MAP[0], MAP_GLOAP.CURR_MAP[1]);
            MAP_GLOAP.map.panTo(center);
        }
        //通過IP獲取定位
        var IpMap = function () {
            //如果有值的話就不需要重新定位
            if( MAP_GLOAP.CURR_ADR) return;

            var data = {
                    address: MAP_GLOAP.CURR_ADR,
                    key: MAP_GLOAP.KEY, //key為自己向騰訊地圖申請的密鑰
                    output: "jsonp"
                };

                var url = "http://apis.map.qq.com/ws/location/v1/ip";
                $.ajax({
                    type: "get",
                    dataType: ‘jsonp‘,
                    data: data,
                    jsonp: "callback",
                    jsonpCallback: "QQmap",
                    url: url,
                    success: function (res) {
                        console.log(res);
                        if (res && res.result.location) {
                            MAP_GLOAP.CURR_MAP = [res.result.location.lat, res.result.location.lng];

                            //刷新坐標軸
                            RefMap();
                            //刷新maker
                            AddMark();
                            //刷新輸入框
                            RefSearch();
                        }
                        else {
                            alert("暫時沒有查到該地區,請重新在試下!");
                        }
                    },
                    error: function (err) {
                        alert("服務端錯誤,請刷新瀏覽器後重試");
                    }
                });

        }
        //地址查詢
        var SearchMap = function () {
            //1.獲取地址名稱,轉譯坐標
            //2.設置坐標,重新載入地圖
            $(MAP_GLOAP.SearchBT).click(function () {
                MAP_GLOAP.CURR_ADR = $(MAP_GLOAP.SearchInput).val();
                if (!MAP_GLOAP.CURR_ADR || MAP_GLOAP.CURR_ADR < 0) {
                    alert("查詢數據不能為空");
                }

                var data = {
                    address: MAP_GLOAP.CURR_ADR,
                    key: MAP_GLOAP.KEY, //key為自己向騰訊地圖申請的密鑰
                    output: "jsonp"
                };

                var url = "http://apis.map.qq.com/ws/geocoder/v1/";
                $.ajax({
                    type: "get",
                    dataType: ‘jsonp‘,
                    data: data,
                    jsonp: "callback",
                    jsonpCallback: "QQmap",
                    url: url,
                    success: function (res) {
                        console.log(res);
                        if (res && res.result.location) {
                            MAP_GLOAP.CURR_MAP = [res.result.location.lat, res.result.location.lng];

                            //刷新坐標軸
                            RefMap();
                            //刷新maker
                            AddMark();
                            //刷新輸入框
                            RefSearch();
                        }
                        else {
                            alert("暫時沒有查到該地區,請重新在試下!");
                        }
                    },
                    error: function (err) {
                        alert("服務端錯誤,請刷新瀏覽器後重試");
                    }
                });



            })


        }
        //初始化
        var init = function () {
            //定義map變量 
            MAP_GLOAP.map = new qq.maps.Map(document.getElementById("container"), {
                center: new qq.maps.LatLng(MAP_GLOAP.CURR_MAP[0], MAP_GLOAP.CURR_MAP[1]),      // 地圖的中心地理坐標。
                zoom: 10  // 地圖的中心地理坐標。
            });

            //添加監聽事件
            qq.maps.event.addListener(MAP_GLOAP.map, ‘click‘, function (e) {
                MAP_GLOAP.CURR_MAP = [e.latLng.getLat().toFixed(5), e.latLng.getLng().toFixed(5)];

                var data = {
                    location: MAP_GLOAP.CURR_MAP[0] + ‘,‘ + MAP_GLOAP.CURR_MAP[1],
                    key: MAP_GLOAP.KEY, //key為自己向騰訊地圖申請的密鑰
                    get_poi: 0
                };
                var url = "http://apis.map.qq.com/ws/geocoder/v1/?";
                data.output = "jsonp";
                $.ajax({
                    type: "get",
                    dataType: ‘jsonp‘,
                    data: data,
                    jsonp: "callback",
                    jsonpCallback: "QQmap",
                    url: url,
                    success: function (res) {
                        console.log(res);
                        MAP_GLOAP.CURR_ADR = res.result.address;//  `${res.result.address_component.province}${res.result.address_component.city}${res.result.formatted_addresses.recommend}`;   
                        MAP_GLOAP.CURR_MAP = [res.result.location.lat, res.result.location.lng];

                        //刷新坐標軸
                        RefMap();
                        //刷新maker
                        AddMark();
                        //刷新輸入框
                        RefSearch();
                    },
                    error: function (err) {
                        //  alert("服務端錯誤,請刷新瀏覽器後重試");
                    }
                });

                AddMark;
            });
        }

        window.onload = function () {
            //當前ip獲取地址
            IpMap();

            //初始化地圖函數  自定義函數名init
            init();

            //地址查詢功能
            SearchMap();
        }
    </script>
</head>

<body>
        <input type="text" value="" id="mapSearch"><button id="mapSearchBT" value="">查詢</button>
    <!--   顯示地圖的區域   -->
    <div id="container"></div>


</body>

  

C# 直接可用模板:

//調用

  

騰訊地圖JSAPI開發demo 定位,查詢