traccar-server源代码编译环境搭建

一、安装编译软件及支持软件:
1、安装IntelliJ IDEA Community版编译软件(免费的哦)https://www.jetbrains.com/idea/download … on=windows
2、安装JDK(TM)8 64位、Java(TM) 8 64位,利用360软件管家还是很方便的
3、安装Git 64位,这个不是必须的,下载、同步源代码用

二、下载源代码:
1、在 https://github.com/traccar/traccar (后端)和 https://github.com/traccar/traccar-web (前端)下载最新的源代码。
2、或者用git下载 :git clone –recursive https://github.com/traccar/traccar.git

三、修改gradle下载依赖jar包为国内源,提高下载速度:
打开源代码根目录下的 build.gradle 文件,将“repositories”节内容修改为:

  1. repositories {
  2.     maven{ url’http://maven.aliyun.com/nexus/content/groups/public/’}   // 新增阿里源
  3.     mavenCentral()
  4. }

四、导入源代码:
参考“ https://www.traccar.org/build-in-intellij-idea/ ”内容,是不是成功了。

原文作者: BG6RSH | 查看原帖

此条目发表在学习笔记分类目录。将固定链接加入收藏夹。

《traccar-server源代码编译环境搭建》有4条回应

  1. BG6RSH说:

    五、前端源代码修改
    1、 traccar-web/web/l10n/zh.json 文件中添加高德地图选项: “mapAmap”: “高德地图”,如下图:

    web-1.PNG

    2、traccar-web/web/app/view/map/BaseMap.js文件41行添加高德地图调用:

    1.             case ‘amap’:
    2.                 layer = new ol.layer.Tile({
    3.                     source: new ol.source.XYZ({
    4.                        url: ‘https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}’,
    5.                        attributions: ‘&copy; <a href="https://ditu.amap.com/">高德</a&gt;’
    6.                     })
    7.                 });
    8.                 break;

    见下图:

    web-2.PNG

    3、traccar-web/web/app/store/MapTypes.js 添加下列代码:

    1.         key: ‘amap’,
    2.         name: Strings.mapAmap
    3.     }, {

    如下图:

    web-3.PNG
  2. BG6RSH说:

    六、源代码压缩打包:
    1、Extjs6.2.0支持库:

    ext-6.2.0-gpl.zip

    ,下载后解压到随便那个地方;
    2、根据操作系统选择32、64位SenchaCmd下载,按默认选择安装。
    SenchaCmd6.2.2 32位
    SenchaCmd6.2.2 64位

    SenchaCmd-7.8.0.59-linux-amd64.sh.zip

    3、修改“\traccar\traccar-web\tools\minify.bat”

    1. @echo off
    2. cd C:\[traccar path]\traccar\web
    3. set SDK=C:\[sencha path]\ext-6.2.0
    4.  
    5. sencha -sdk %SDK% compile -classpath=app.js,app,%SDK%\packages\core\src,%SDK%\packages\core\overrides,%SDK%\classic\classic\src,%SDK%\classic\classic\overrides exclude -all and include -recursive -file app.js and exclude -namespace=Ext and concatenate -closure app.min.js
    6.  

    根据Extjs6.2.0支持库解压目录和TRACCAR的WEB源代码目录修改文件内容。
    4、运行“minify.bat”批处理程序,会在“\traccar-web\web”目录生成一个“app.min.js”文件,这个也是需要上传到服务器的文件。

  3. BG6RSH说:

    七、后台服务器修改:
    1、逆地址编码调用MainModule.java

    1. Index: src/main/java/org/traccar/MainModule.java
    2. IDEA additional info:
    3. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    4. <+>UTF–8
    5. ===================================================================
    6. — src/main/java/org/traccar/MainModule.java   (revision cdf892cd39c528929284728562beef3220e91cf3)
    7. +++ src/main/java/org/traccar/MainModule.java   (date 1606206019169)
    8. @@ –29,22 +29,7 @@
    9.  import org.traccar.database.IdentityManager;
    10.  import org.traccar.database.MaintenancesManager;
    11.  import org.traccar.database.StatisticsManager;
    12. –import org.traccar.geocoder.AddressFormat;
    13. –import org.traccar.geocoder.BanGeocoder;
    14. –import org.traccar.geocoder.BingMapsGeocoder;
    15. –import org.traccar.geocoder.FactualGeocoder;
    16. –import org.traccar.geocoder.GeocodeFarmGeocoder;
    17. –import org.traccar.geocoder.GeocodeXyzGeocoder;
    18. –import org.traccar.geocoder.Geocoder;
    19. –import org.traccar.geocoder.GisgraphyGeocoder;
    20. –import org.traccar.geocoder.GoogleGeocoder;
    21. –import org.traccar.geocoder.HereGeocoder;
    22. –import org.traccar.geocoder.MapQuestGeocoder;
    23. –import org.traccar.geocoder.MapmyIndiaGeocoder;
    24. –import org.traccar.geocoder.NominatimGeocoder;
    25. –import org.traccar.geocoder.OpenCageGeocoder;
    26. –import org.traccar.geocoder.PositionStackGeocoder;
    27. –import org.traccar.geocoder.TomTomGeocoder;
    28. +import org.traccar.geocoder.*;
    29.  import org.traccar.geolocation.GeolocationProvider;
    30.  import org.traccar.geolocation.GoogleGeolocationProvider;
    31.  import org.traccar.geolocation.MozillaGeolocationProvider;
    32. @@ –184,6 +169,9 @@
    33.                      return new TomTomGeocoder(url, key, cacheSize, addressFormat);
    34.                  case "positionstack":
    35.                      return new PositionStackGeocoder(key, cacheSize, addressFormat);
    36. +                /*** 高德地图反向地理编码***/
    37. +                case "amap":
    38. +                    return new AmapGeocoder(url, key, cacheSize, addressFormat);
    39.                  default:
    40.                      return new GoogleGeocoder(key, language, cacheSize, addressFormat);
    41.              }

    2、JsonGeocoder.java

    1. Index: src/main/java/org/traccar/geocoder/JsonGeocoder.java
    2. IDEA additional info:
    3. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    4. <+>UTF–8
    5. ===================================================================
    6. — src/main/java/org/traccar/geocoder/JsonGeocoder.java    (revision cdf892cd39c528929284728562beef3220e91cf3)
    7. +++ src/main/java/org/traccar/geocoder/JsonGeocoder.java    (date 1606208737428)
    8. @@ –28,6 +28,8 @@
    9.  import java.util.LinkedHashMap;
    10.  import java.util.Map;
    11.  
    12. +import org.traccar.config.Keys; // 高德适配
    13. +
    14.  public abstract class JsonGeocoder implements Geocoder {
    15.  
    16.      private static final Logger LOGGER = LoggerFactory.getLogger(JsonGeocoder.class);
    17. @@ –95,7 +97,14 @@
    18.              }
    19.          }
    20.  
    21. –        Invocation.Builder request = Context.getClient().target(String.format(url, latitude, longitude)).request();
    22. +        //Invocation.Builder request = Context.getClient().target(String.format(url, latitude, longitude)).request();
    23. +        // 高德适配
    24. +        String type = Context.getConfig().getString(Keys.GEOCODER_TYPE, "google");
    25. +        Invocation.Builder request;
    26. +        if(type.equals("amap"))  // 高德地图适配
    27. +            request = Context.getClient().target(String.format(url, longitude, latitude)).request();
    28. +        else
    29. +            request = Context.getClient().target(String.format(url, latitude, longitude)).request();
    30.  
    31.          if (callback != null) {
    32.              request.async().get(new InvocationCallback<JsonObject>() {
  4. BG6RSH说:

    3、OsmAndProtocolDecoder.java

    1. Index: src/main/java/org/traccar/protocol/OsmAndProtocolDecoder.java
    2. IDEA additional info:
    3. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    4. <+>UTF–8
    5. ===================================================================
    6. — src/main/java/org/traccar/protocol/OsmAndProtocolDecoder.java   (revision cdf892cd39c528929284728562beef3220e91cf3)
    7. +++ src/main/java/org/traccar/protocol/OsmAndProtocolDecoder.java   (date 1606201926801)
    8. @@ –60,6 +60,11 @@
    9.          Position position = new Position(getProtocolName());
    10.          position.setValid(true);
    11.  
    12. +        /* 坐标转换 WGS84 -> GCJ02  BD09*/
    13. +        Double tlat = Double.parseDouble(params.get("lat").get(0));
    14. +        Double tlon = Double.parseDouble(params.get("lon").get(0));
    15. +        double pos_gcj02[] = GpsCoordinateUtils.calWGS84toGCJ02(tlat, tlon);
    16. +        //double pos_bd09[]  = GpsCoordinateUtils.calWGS84toBD09(tlat, tlon);
    17.          Network network = new Network();
    18.  
    19.          for (Map.Entry<String, List<String>> entry : params.entrySet()) {
    20. @@ –94,15 +99,21 @@
    21.                          }
    22.                          break;
    23.                      case "lat":
    24. –                        position.setLatitude(Double.parseDouble(value));
    25. +                        //position.setLatitude(Double.parseDouble(value));  // WGS84
    26. +                        position.setLatitude(pos_gcj02[0]);  // GCJ02
    27. +                        //position.setLatitude_bd09(pos_bd09[0]);  // BD09
    28.                          break;
    29.                      case "lon":
    30. –                        position.setLongitude(Double.parseDouble(value));
    31. +                        //position.setLongitude(Double.parseDouble(value));  // WGS84
    32. +                        position.setLongitude(pos_gcj02[1]);  // GCJ02
    33. +                        //position.setLongitude_bd09(pos_bd09[1]);  // BD09
    34.                          break;
    35.                      case "location":
    36. –                        String[] location = value.split(",");
    37. –                        position.setLatitude(Double.parseDouble(location[0]));
    38. –                        position.setLongitude(Double.parseDouble(location[1]));
    39. +                        //String[] location = value.split(",");
    40. +                        //position.setLatitude(Double.parseDouble(location[0]));
    41. +                        //position.setLongitude(Double.parseDouble(location[1]));
    42. +                        position.setLatitude(pos_gcj02[0]);  // GCJ02
    43. +                        position.setLongitude(pos_gcj02[1]);  // GCJ02
    44.                          break;
    45.                      case "cell":
    46.                          String[] cell = value.split(",");

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。