Проект требует, чтобы веб -версия карты Baidu была разработана в автономном режиме. Вот краткое изложение вашего собственного процесса разработки и опыта.
Приблизительное требование: каждый автомобиль оснащен приемником компании, который будет обращать на движение координаты автомобиля, скорость, рулевое управление и другую информацию в режиме реального времени, и после получения информации каждого транспортного средства расположение транспортного средства проводятся на карте Baidu в режиме реального времени. Рабочие точки не обязательно имеют сети, поэтому требуется автономная разработка.
В этом процессе есть три основных технических момента:
1. Как получить офлайн API
2. Как получить офлайн -диаграммы плитки
3. Как преобразовать координаты WGS в координаты карты Baidu, когда в автономном режиме
Процесс решения проблем:
1. Поскольку Baidu Maps не поддерживает автономные карты, нам нужно найти способ изменить онлайн -код на автономный код.
Здесь вы можете обратиться к: http://my.oschina.net/smzd/blog/548538
Я составил здесь копию, и я также написал офлайн -демонстрацию в соответствии с примером демонстрации. Конечно, офлайн не может быть таким идеальным, как онлайн, в конце концов, некоторые функции все еще не используются. (Эта версия основана на Baidu Maps API v2.0)
Как использовать:
1. Определите суффикс изображения используемой вами плитки, такой как .png, .jpg. Изменить imgext в Baidumap_offline_v2_load.js
var bdmapcfg = { 'imgext':'.jpg', //The suffix of the tile picture-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2. Определите каталог используемой вами плитки. По умолчанию он находится в каталоге Baidumap_v2/ Tiles/, и вы также можете изменить его на другой адрес. Modify tiles_dir в baidumap_offline_v2_load.js
3. См. Демо, чтобы написать код, ключевые моменты следующие:
1) Просто загрузите файл загрузки
<script type = "text/javascript" src = "baidumapv2/baidumap_offline_v2_load.js"> </script>
2) Загрузите файл CSS (он кажется необходимым)
<link rel = "styleSheet" type = "text/css" href = "../../ baiduumapv2/css/baidu_map_v2.css"/>
3) Определите контейнер для размещения карты и используйте CSS для управления высотой и шириной
<div id = "map_demo"> </div>
4) Напишите код JS
<script type = "text/javascript"> // baidu map function function var map = new bmap.map ("map_demo"); // Создать карту экземпляра карты. // инициализируйте карту, установите координаты центральной точки и уровень карты //map.addcontrol(new bmap.maptypecontrol ()); // Добавить управление типом карты, чтобы поддержать только электронные карты в автономном режиме, а спутниковое/3D не поддерживает //map.setCurrentCity("beijing "); // Настройка карт автономных карт, отображаемые на карте, не поддерживают! ! map.enablescrollwheelzoom (true); // Откройте колесо мыши для Zoom Map.AddControl (новый bmap.navigationControl ()); // Кнопка масштабирования </script>2. Получите схему плитки
Здесь вы можете обратиться к: http://my.oschina.net/smzd/blog/619397
Конечно, он также есть инструменты загрузки, например: Скачать всестороннюю электронную карту.
3. Предвзятость непосредственно размещать координаты (WGS), полученные приемником в карту Baidu, потому что карта Baidu сделала специальные методы безопасности для безопасности. Его веб -сервис API предоставляет API конвертации координат, но это интерфейс конверсии координат, предоставляемый в HTTP, поэтому он все еще не может быть отделен от сети. Здесь мы используем некоторые профессиональные знания для преобразования координат WGS в GCJ, а затем для преобразования координат GCJ в координаты BD Baidu. Точность проверки почти точна.
открытый класс coorConvertutil {// pi static double pi = 3,14159265358979324; // Проекционное коэффициент проекции проекции спутниковой эллипсоидной координат в систему плоской координат Статический двойной a = 6378245.0; // эксцентриситет эллипсоидного статического двойного EE = 0,00669342162296594323; // Сумма преобразования PI Public Final Static Double x_pi = 3.14159265358979324 * 3000.0 /180.0; public static double [] wgs2bd (double lat, double lon) {double [] wgs2gcj = wgs2gcj (lat, lon); Double [] gcj2bd = gcj2bd (wgs2gcj [0], wgs2gcj [1]); вернуть GCJ2BD; } / ** * GCJ координаты с координатами Baidu * @param lat * @param lon * @return * / public static double [] gcj2bd (двойной лат, двойной lon) {double x = lon, y = lat; double z = math.sqrt (x * x + y * y) + 0,00002 * math.sin (y * x_pi); Double Theta = math.atan2 (y, x) + 0,000003 * math.cos (x * x_pi); Double bd_lon = z * math.cos (theta) + 0,0065; double bd_lat = z * math.sin (theta) + 0,006; вернуть новый двойной [] {bd_lat, bd_lon}; } public static double [] bd2gcj (двойной лат, двойной Lon) {Double x = LON - 0,0065, y = lat - 0,006; double z = math.sqrt (x * x + y * y) - 0,00002 * math.sin (y * x_pi); Double Theta = math.atan2 (y, x) - 0,000003 * math.cos (x * x_pi); double gg_lon = z * math.cos (theta); double gg_lat = z * math.sin (theta); вернуть новый двойной [] {gg_lat, gg_lon}; } / ** * WGS координаты с координатами GCJ * @param lat * @param lon * @return * / public static double [] wgs2gcj (двойной лат, двойной lon) {double dlat = transformlat (lon - 105.0, lat - 35.0); Double dlon = Transformlon (LON - 105,0, LAT - 35,0); Double Radlat = lat / 180,0 * Pi; Double Magic = math.sin (Radlat); Magic = 1 - Ee * Magic * Magic; Double sqrtmagic = math.sqrt (магия); dlat = (dlat * 180.0) / ((a * (1 - ee)) / (магия * sqrtmagic) * pi); dlon = (dlon * 180.0) / (a / sqrtmagic * math.cos (radlat) * pi); double mglat = lat + dlat; Double mglon = lon + dlon; double [] loc = {mglat, mglon}; вернуть loc; } private static double transformlat (double lat, double lon) {double ret = -100,0 + 2,0 * lat + 3,0 * lon + 0,2 * lon * lon + 0,1 * lat * lon + 0,2 * math.sqrt (math.abs (lat)); ret + = (20,0 * Math.Sin (6.0 * lat * pi) + 20,0 * Math.sin (2.0 * lat * pi)) * 2.0 / 3.0; ret + = (20,0 * math.sin (lon * pi) + 40,0 * Math.sin (lon / 3.0 * pi)) * 2.0 / 3.0; ret + = (160,0 * Math.Sin (lon / 12,0 * Pi) + 320 * Math.sin (lon * pi / 30,0)) * 2.0 / 3,0; вернуть вт; } private static double transformlon (double lat, двойной lon) {double ret = 300,0 + lat + 2,0 * lon + 0,1 * lat * lat + 0,1 * lat * lon + 0,1 * math.sqrt (math.abs (lat)); ret + = (20,0 * Math.Sin (6.0 * lat * pi) + 20,0 * Math.sin (2.0 * lat * 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 + = (150,0 * Math.Sin (lat / 12,0 * Pi) + 300,0 * Math.sin (lat / 30,0 * Pi)) * 2.0 / 3.0; вернуть вт; } / ** * Деление степени и вращение * @param late latitude ddmm.mmmmmm * @param lon longitude dddmm.m.mmmm * @return * / public static double [] dufen2du (String lat, String lon) {double latd = double.parsedouble (lat.substring (0, 2)); double latm = double.parsedouble (lat.substring (2)); double latnew = latd+latm/60; double lond = double.parsedouble (lon.substring (0, 3)); double lonm = double.parsedouble (lon.substring (3)); Double Lonnew = Lond+Lonm/60; вернуть новый двойной [] {latnew, lonnew}; }}Наконец, посмотрите на скриншот эффекта проекта:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.