转载至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 + "®ion=" + 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 =

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

被折叠的 条评论
为什么被折叠?



