百度地图POI轮廓经纬度提取

本文详细介绍了如何在百度地图上绘制小区边界,包括利用jsonp查询小区信息和边界数据,以及进行坐标转换的方法。文章提供了一段JavaScript代码示例,展示了从墨卡托坐标到百度坐标的转换过程,同时也提到了WGS84、Web墨卡托、火星坐标和百度坐标之间的转换原理和相关资源链接。

转载至https://blog.csdn.net/zhonghuart/article/details/77934693

百度地图小区边界(轮廓)处理

最近,查了很多资料都没法在百度地图上画出小区边界,经过一番研究后,终于发现了一种方式。以下是demo的相关说明:

1. demo中小区相关信息查询是基于jsonp的方式处理
2. 使用百度地图需要申请AK,demo中使用的是我个人的申请的,如果demo打开没有效果可能是AK过期了
3. 因为小区轮廓百度没有公布相关API,demo中的接口有可能被百度关闭
4. 可能有的小区并没有相关轮廓数据,所以demo中也无法显示出来


闲话不多说了,直接上代码

1)JS代码(下变第一部分代码)

2)HTML代码(下边第二部分代码)

3)下载地址:http://pan.baidu.com/s/1qY2rAPI

4)效果


var queryHouseOutline = function(hid, callback){
    var baseURL = 'http://map.baidu.com/?reqflag=pcmap&coord_type=3&from=webmap&qt=ext&ext_ver=new&l=18';
    var url = baseURL + "&uid=" + hid;
    callback && (window.queryHouseOutlineCallback = callback);
    $.ajax({
        type: "get",
        async: false,
        url: url,
        dataType: "jsonp",
        jsonpCallback: "queryHouseOutlineCallback",
        success: function(datas) {
        }
    });
};
 
/**
 * 模糊查询小区信息, 无返回值
 * @param {} house    小区名称
 * @param {} city    所属城市名称
 * @param {} ak        百度地图AK
 * @param {} callback    回调函数,该函数可以接收到请求的返回值
 */
var queryHouse = function(house, city, ak, callback){
    var baseURL = 'http://api.map.baidu.com/place/v2/search?output=json&scope=2';
    var url = baseURL + "&q=" + house + "&region=" + city + "&ak=" + ak;
    callback && (window.queryHouseCallback = callback);
    $.ajax({
        type: "get",
        async: false,
        url: url,
        dataType: "jsonp",
        jsonpCallback: "queryHouseCallback",
        success: function(datas) {
        }
    });
};
 
/**
 * 墨卡托坐标转百度坐标
 * @param {} coordinate
 * @return {}
 */
var coordinateToPoints = function(map, coordinate) {
    var points = [];
    if (coordinate) {
        var arr = coordinate.split(";");
        if(arr){
            for(var i = 0; i < arr.length; i++){
                var coord = arr[i].split(",");
                if(coord && coord.length == 2){
                    var mctXY = new BMap.Pixel(coord[0], coord[1]);    
                    var project = map.getMapType().getProjection();
                    var point = project.pointToLngLat(mctXY);   
                    points.push(new BMap.Point(point.lng, point.lat));
                }
            }
        }
    }
    return points;
};
/**
 * 墨卡托坐标解析
 * @param {} mocator
 * @return {}
 */
var parseGeo = function(mocator){
    if(typeof mocator != 'string'){
        return {};
    }
    var t = mocator.split("|");
    var n = parseInt(t[0]);
    var i = t[1];
    var r = t[2];
    var o = r.split(";");
    if(n === 4){
        for (var a = [], s = 0; s < o.length - 1; s++){
            "1" === o[s].split("-")[0] && a.push(o[s].split("-")[1]);
        }
        o = a;
        o.push("");
    }
    var u = [];
    switch(n){
        case 1:
            u.push(o[0]);
            break;
        case 2:
        case 3:
        case 4:
            for (var s = 0; s < o.length - 1; s++) {
                var l = o[s];
                if (l.length > 100){
                    l =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值