百度地图根据经纬度坐标值绘制轨迹.

Posted ly570

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图根据经纬度坐标值绘制轨迹.相关的知识,希望对你有一定的参考价值。

var map = new BMap.Map("map");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
map.enableScrollWheelZoom(); // 开启鼠标滚轮缩放
map.addControl(new BMap.ScaleControl()); // 添加比例尺控件

var pointStr = "104.038748,30.641821,104.047789,30.648128,104.063959,30.655336,104.067264,30.660307,104.067264,30.664438,104.064008,30.665316".split(",");
var pointArr = [];

for (var k = 0; k < pointStr.length; k += 2)
pointArr.push(
lng: pointStr[k],
lat: pointStr[k + 1]
);


// 生成坐标点
var trackPoint = [];
for (var i = 0, j = pointArr.length; i < j; i++)
trackPoint.push(new BMap.Point(pointArr[i].lng, pointArr[i].lat));

map.centerAndZoom(trackPoint[0], 15);

// 画线
var polyline = new BMap.Polyline(trackPoint,
strokeColor: "#1869AD",
strokeWeight: 3,
strokeOpacity: 1
);
map.addOverlay(polyline);

// 配置图片
var size = new BMap.Size(26, 26);
var offset = new BMap.Size(0, -13);
var imageSize = new BMap.Size(26, 26);
var icon = new BMap.Icon("./express-position.png", size,
imageSize: imageSize
);

// 画图标
for (var i = 0, j = trackPoint.length; i < j; i++)
var marker = new BMap.Marker(trackPoint[i],
icon: icon,
offset: offset
); // 创建标注
map.addOverlay(marker);

//根据经纬极值计算绽放级别。 (从网上复制)
function getZoom(maxLng, minLng, maxLat, minLat)
var zoom = ["50", "100", "200", "500", "1000", "2000", "5000", "10000", "20000", "25000", "50000", "100000", "200000", "500000", "1000000", "2000000"]; // 级别18到3。
var pointA = new BMap.Point(maxLng, maxLat); // 创建点坐标A
var pointB = new BMap.Point(minLng, minLat); // 创建点坐标B
var distance = map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位
for (var i = 0, zoomLen = zoom.length; i < zoomLen; i++)
if (zoom[i] - distance > 0)
return 18 - i + 3; //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。




// (从网上复制)
function setZoom(points)
if (points.length > (http://www.amjmh.com/v/BIBRGZ_558768/)0)
var maxLng = points[0].lng;
var minLng = points[0].lng;
var maxLat = points[0].lat;
var minLat = points[0].lat;
var res;
for (var i = points.length - 1; i >= 0; i--)
res = points[i];
if (res.lng > maxLng) maxLng = res.lng;
if (res.lng < minLng) minLng = res.lng;
if (res.lat > maxLat) maxLat = res.lat;
if (res.lat < minLat) minLat = res.lat;

var cenLng = (parseFloat(maxLng) + parseFloat(minLng)) / 2;
var cenLat = (parseFloat(maxLat) + parseFloat(minLat)) / 2;
var zoom = getZoom(maxLng, minLng, maxLat, minLat);
map.centerAndZoom(new BMap.Point(cenLng, cenLat), zoom);
else
//没有坐标,显示全中国
map.centerAndZoom(new BMap.Point(103.388611, 35.563611), 5);

setZoom(pointArr)

 

以上是关于百度地图根据经纬度坐标值绘制轨迹.的主要内容,如果未能解决你的问题,请参考以下文章

如何将经纬度在地图上显示出轨迹

百度地图行政区绘制

百度地图API 如何根据现有坐标集合生成曲线轨迹?

我现在有大量的经纬度坐标点,想在地图上绘制各点相连的图形。谷歌API或者百度API可以实现这样的功能吗?

如何在百度地图输入经纬度进行查询

怎样把GPS得到的经纬度转换为具体位置