Forráskód Böngészése

change ui_ads_hmi/BaiduMap.html. for use calculate by function.

yuchuli 2 éve
szülő
commit
dd7d71aa9f
1 módosított fájl, 107 hozzáadás és 14 törlés
  1. 107 14
      src/ui/ui_ads_hmi/BaiDuMap.html

+ 107 - 14
src/ui/ui_ads_hmi/BaiDuMap.html

@@ -34,7 +34,7 @@
 
    
     // 百度地图API功能
-    var map = new BMap.Map("allmap");            // 创建Map实例
+    var map = new BMap.Map("allmap", {mapType:BMAP_SATELLITE_MAP});            // 创建Map实例
 
     //添加拖拽和缩放功能
     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 });
 
     //添加地图类型和缩略图
@@ -78,6 +78,11 @@
     map.centerAndZoom(point, 18);
     var convertor = new BMap.Convertor();
     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, {
     enableEditing: false,//是否启用线编辑,默认为false
@@ -100,7 +105,71 @@
 	var icon = new BMap.Icon('car.png',new BMap.Size(15,30));
         icon.imageSize = new BMap.Size(15,30);
         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);
 
@@ -142,6 +211,40 @@
     // 用经纬度设置地图中心点
     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;
         var gpsPoint = new BMap.Point(Longitude, Latitude);
 
@@ -151,16 +254,6 @@
 var pointArr = [];
 pointArr.push(gpsPoint);
         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) {
 
-        alert("地图加载失败,请检查网络!");
+        //alert("地图加载失败,请检查网络!");
 
     }