|
@@ -34,7 +34,7 @@
|
|
|
|
|
|
|
|
|
|
// 百度地图API功能
|
|
// 百度地图API功能
|
|
- var map = new BMap.Map("allmap"); // 创建Map实例
|
|
|
|
|
|
+ var map = new BMap.Map("allmap", {mapType:BMAP_SATELLITE_MAP}); // 创建Map实例
|
|
|
|
|
|
//添加拖拽和缩放功能
|
|
//添加拖拽和缩放功能
|
|
map.enableScrollWheelZoom(true);
|
|
map.enableScrollWheelZoom(true);
|
|
@@ -49,7 +49,7 @@
|
|
|
|
|
|
|
|
|
|
//添加地图类型
|
|
//添加地图类型
|
|
- var mapType1 = new BMap.MapTypeControl({ mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP] });
|
|
|
|
|
|
+ var mapType1 = new BMap.MapTypeControl({ mapTypes: [BMAP_HYBRID_MAP, BMAP_NORMAL_MAP] });
|
|
var mapType2 = new BMap.MapTypeControl({ anchor: BMAP_ANCHOR_TOP_LEFT });
|
|
var mapType2 = new BMap.MapTypeControl({ anchor: BMAP_ANCHOR_TOP_LEFT });
|
|
|
|
|
|
//添加地图类型和缩略图
|
|
//添加地图类型和缩略图
|
|
@@ -78,6 +78,11 @@
|
|
map.centerAndZoom(point, 18);
|
|
map.centerAndZoom(point, 18);
|
|
var convertor = new BMap.Convertor();
|
|
var convertor = new BMap.Convertor();
|
|
var polylineTrace;
|
|
var polylineTrace;
|
|
|
|
+
|
|
|
|
+ var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
|
|
|
|
+ var PI = 3.1415926535897932384626;
|
|
|
|
+ var a = 6378245.0;
|
|
|
|
+ var ee = 0.00669342162296594323;
|
|
/*
|
|
/*
|
|
var polylineTrace =new BMap.Polyline(gtracelist, {
|
|
var polylineTrace =new BMap.Polyline(gtracelist, {
|
|
enableEditing: false,//是否启用线编辑,默认为false
|
|
enableEditing: false,//是否启用线编辑,默认为false
|
|
@@ -100,7 +105,71 @@
|
|
var icon = new BMap.Icon('car.png',new BMap.Size(15,30));
|
|
var icon = new BMap.Icon('car.png',new BMap.Size(15,30));
|
|
icon.imageSize = new BMap.Size(15,30);
|
|
icon.imageSize = new BMap.Size(15,30);
|
|
icon.anchor = new BMap.Size(8,15);
|
|
icon.anchor = new BMap.Size(8,15);
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function transformlat(lng, lat) {
|
|
|
|
+var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
|
|
|
|
+ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
|
|
|
+ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
|
|
|
|
+ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
|
|
|
|
+return ret
|
|
|
|
+}
|
|
|
|
+function transformlng(lng, lat) {
|
|
|
|
+var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
|
|
|
|
+ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
|
|
|
+ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
|
|
|
|
+ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
|
|
|
|
+return ret
|
|
|
|
+}
|
|
|
|
+/**
|
|
|
|
+* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
|
|
|
|
+* 即谷歌、高德 转 百度
|
|
|
|
+* @param lng
|
|
|
|
+* @param lat
|
|
|
|
+* @returns {*[]}
|
|
|
|
+*/
|
|
|
|
+function gcj02tobd09(lng, lat) {
|
|
|
|
+var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
|
|
|
|
+var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
|
|
|
|
+var bd_lng = z * Math.cos(theta) + 0.0065;
|
|
|
|
+var bd_lat = z * Math.sin(theta) + 0.006;
|
|
|
|
+return [bd_lng, bd_lat]
|
|
|
|
+}
|
|
|
|
+/**
|
|
|
|
+* WGS84转GCj02
|
|
|
|
+* @param lng
|
|
|
|
+* @param lat
|
|
|
|
+* @returns {*[]}
|
|
|
|
+*/
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+* 判断是否在国内,不在国内则不做偏移
|
|
|
|
+* @param lng
|
|
|
|
+* @param lat
|
|
|
|
+* @returns {boolean}
|
|
|
|
+*/
|
|
|
|
+function out_of_china(lng, lat) {
|
|
|
|
+return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function wgs84togcj02(lng, lat) {
|
|
|
|
+if (out_of_china(lng, lat)) {
|
|
|
|
+return [lng, lat]
|
|
|
|
+}
|
|
|
|
+else {
|
|
|
|
+var dlat = transformlat(lng - 105.0, lat - 35.0);
|
|
|
|
+var dlng = transformlng(lng - 105.0, lat - 35.0);
|
|
|
|
+var radlat = lat / 180.0 * PI;
|
|
|
|
+var magic = Math.sin(radlat);
|
|
|
|
+magic = 1 - ee * magic * magic;
|
|
|
|
+var sqrtmagic = Math.sqrt(magic);
|
|
|
|
+dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
|
|
|
|
+dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
|
|
|
|
+var mglat = lat + dlat;
|
|
|
|
+var mglng = lng + dlng;
|
|
|
|
+return [mglng, mglat]
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
|
|
//showalert(testmsg);
|
|
//showalert(testmsg);
|
|
|
|
|
|
@@ -142,6 +211,40 @@
|
|
// 用经纬度设置地图中心点
|
|
// 用经纬度设置地图中心点
|
|
function theLocation(Longitude,Latitude,rotation) {
|
|
function theLocation(Longitude,Latitude,rotation) {
|
|
|
|
|
|
|
|
+ var lng_lat_1 = wgs84togcj02(Longitude+0.0001000,Latitude);
|
|
|
|
+ var lng_lat_2 = gcj02tobd09(lng_lat_1[0],lng_lat_1[1]);
|
|
|
|
+ var point = new BMap.Point(lng_lat_2[0],lng_lat_2[1] );
|
|
|
|
+
|
|
|
|
+// var point = new BMap.Point(Longitude,Latitude );
|
|
|
|
+
|
|
|
|
+ grotation = rotation;
|
|
|
|
+
|
|
|
|
+ map.removeOverlay(markerCur);
|
|
|
|
+ markerCur = new BMap.Marker(point);
|
|
|
|
+ if(havepointlast == 1)
|
|
|
|
+ {
|
|
|
|
+ if(drawtrail == 1)
|
|
|
|
+ {
|
|
|
|
+ var line = new BMap.Polyline([pointlast, point], {strokeColor: "green", strokeWeight: 1, strokeOpacity: 1});
|
|
|
|
+ map.addOverlay(line);
|
|
|
|
+ line.disableMassClear();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ pointlast = point;
|
|
|
|
+ havepointlast = 1;
|
|
|
|
+
|
|
|
|
+ markerCur.setOffset(-30,-30);
|
|
|
|
+ markerCur.setIcon(icon);
|
|
|
|
+ markerCur.setShadow(icon)
|
|
|
|
+ markerCur.setRotation(grotation);
|
|
|
|
+ map.addOverlay(markerCur);
|
|
|
|
+ map.setCenter(point);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 用经纬度设置地图中心点
|
|
|
|
+ function theLocationbaidu(Longitude,Latitude,rotation) {
|
|
|
|
+
|
|
grotation = rotation;
|
|
grotation = rotation;
|
|
var gpsPoint = new BMap.Point(Longitude, Latitude);
|
|
var gpsPoint = new BMap.Point(Longitude, Latitude);
|
|
|
|
|
|
@@ -151,16 +254,6 @@
|
|
var pointArr = [];
|
|
var pointArr = [];
|
|
pointArr.push(gpsPoint);
|
|
pointArr.push(gpsPoint);
|
|
convertor.translate(pointArr, 1, 5, translateCallback)
|
|
convertor.translate(pointArr, 1, 5, translateCallback)
|
|
-//convertor.translate(gpsPoint, 0, translateCallback); //真实经纬度转成百度坐标
|
|
|
|
- // BMap.Convertor.translate(gpsPoint, 0, translateCallback); //真实经纬度转成百度坐标
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //map.clearOverlays();
|
|
|
|
- //var new_point = new BMap.Point(Longitude,Latitude );
|
|
|
|
- //var marker = new BMap.Marker(new_point); // 创建标注
|
|
|
|
- //map.addOverlay(marker); // 将标注添加到地图中
|
|
|
|
- //map.panTo(new_point);
|
|
|
|
- //marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -330,7 +423,7 @@ if(data.status === 0) {
|
|
|
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
|
|
|
- alert("地图加载失败,请检查网络!");
|
|
|
|
|
|
+ //alert("地图加载失败,请检查网络!");
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|