增加轨迹存储业务

This commit is contained in:
qiji4215 2023-04-21 14:04:40 +08:00
parent 5943949cc8
commit 4cce37e991
10 changed files with 252 additions and 91 deletions

View File

@ -94,10 +94,7 @@ public abstract class TraceDataBase extends RoomDatabase {
*/ */
private static class PopulateDbAsync extends AsyncTask<Void, Void, Void> { private static class PopulateDbAsync extends AsyncTask<Void, Void, Void> {
private final ILayerManagerDao mLayerDao;
PopulateDbAsync(TraceDataBase db) { PopulateDbAsync(TraceDataBase db) {
mLayerDao = db.getLayerManagerDao();
} }
@Override @Override

View File

@ -1,6 +1,7 @@
package com.navinfo.omqs.ui.activity.map package com.navinfo.omqs.ui.activity.map
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
@ -9,6 +10,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.map.handler.NiLocationListener
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.databinding.ActivityMainBinding
@ -55,8 +57,6 @@ class MainActivity : BaseActivity() {
binding.viewModel = viewModel binding.viewModel = viewModel
// lifecycle.addObserver(viewModel) // lifecycle.addObserver(viewModel)
lifecycleScope lifecycleScope
//初始化轨迹文件
TraceDataBase.getDatabase(this,Constant.DATA_PATH+SystemConstant.USER_ID+"/trace.sqlite")
} }
override fun onStart() { override fun onStart() {
@ -64,6 +64,13 @@ class MainActivity : BaseActivity() {
//开启定位 //开启定位
mapController.locationLayerHandler.startLocation() mapController.locationLayerHandler.startLocation()
//启动轨迹存储
mapController.locationLayerHandler.setNiLocationListener(NiLocationListener {
binding!!.viewModel!!.addSaveTrace(it)
binding!!.viewModel!!.startSaveTraceThread(this)
})
//显示轨迹图层
mapController.layerManagerHandler.showNiLocationLayer(Constant.DATA_PATH+ SystemConstant.USER_ID+"/trace.sqlite")
} }
override fun onPause() { override fun onPause() {

View File

@ -3,15 +3,22 @@ package com.navinfo.omqs.ui.activity.map
import android.content.Context import android.content.Context
import android.content.DialogInterface import android.content.DialogInterface
import android.util.Log import android.util.Log
import android.view.View
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import com.blankj.utilcode.util.ToastUtils import com.blankj.utilcode.util.ToastUtils
import com.navinfo.collect.library.data.entity.NiLocation
import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapController
import org.videolan.libvlc.LibVlcUtil import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.GeometryToolsKt
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.db.TraceDataBase
import com.navinfo.omqs.system.SystemConstant
import com.navinfo.omqs.ui.dialog.CommonDialog import com.navinfo.omqs.ui.dialog.CommonDialog
import com.navinfo.omqs.ui.manager.TakePhotoManager import com.navinfo.omqs.ui.manager.TakePhotoManager
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.RealmSet
import org.videolan.libvlc.LibVlcUtil
import java.util.*
import javax.inject.Inject import javax.inject.Inject
/** /**
@ -24,6 +31,8 @@ class MainViewModel @Inject constructor(
private var mCameraDialog: CommonDialog? = null private var mCameraDialog: CommonDialog? = null
private var niLocationList:MutableList<NiLocation> = ArrayList<NiLocation>()
/** /**
* 点击我的位置回到我的位置 * 点击我的位置回到我的位置
*/ */
@ -66,4 +75,49 @@ class MainViewModel @Inject constructor(
} }
}) })
} }
fun startSaveTraceThread(context: Context){
Thread(Runnable {
try {
while (true){
if(niLocationList!=null&&niLocationList.size>0){
var niLocation = niLocationList[0]
var doubleArray = doubleArrayOf()
doubleArray[0] = niLocation.longitude
doubleArray[1] = niLocation.latitude
val geometry = GeometryTools.createGeometry(doubleArray)
val tileX = RealmSet<Int>()
GeometryToolsKt.getTileXByGeometry(geometry.toString(), tileX)
val tileY = RealmSet<Int>()
GeometryToolsKt.getTileYByGeometry(geometry.toString(), tileY)
//遍历存储tile对应的x与y的值
tileX.forEach { x ->
tileY.forEach { y ->
niLocation.tilex = x
niLocation.tiley = y
}
}
TraceDataBase.getDatabase(context, Constant.DATA_PATH+ SystemConstant.USER_ID+"/trace.sqlite").niLocationDao.insert(niLocation)
niLocationList.removeAt(0)
Log.e("qj","saveTrace")
}
Thread.sleep(30)
}
} catch (e: InterruptedException) {
e.printStackTrace()
Log.e("qj","异常==${e.message}")
}
}).start()
}
//增加轨迹存储
fun addSaveTrace(niLocation: NiLocation){
if(niLocation!=null&&niLocationList!=null){
niLocationList.add(niLocation)
}
}
} }

View File

@ -76,7 +76,6 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
// implementation 'com.yanzhenjie:kalle:0.1.7' // implementation 'com.yanzhenjie:kalle:0.1.7'
// VTM依赖 // VTM依赖
implementation "net.sf.kxml:kxml2:2.3.0" implementation "net.sf.kxml:kxml2:2.3.0"
implementation 'org.slf4j:slf4j-api:2.0.7' implementation 'org.slf4j:slf4j-api:2.0.7'

View File

@ -3,6 +3,8 @@ package com.navinfo.collect.library.map
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.navinfo.collect.library.data.entity.NiLocation
import com.navinfo.collect.library.data.handler.DataNiLocationHandler
import com.navinfo.collect.library.map.handler.* import com.navinfo.collect.library.map.handler.*
import com.navinfo.collect.library.map.maphandler.MeasureLayerHandler import com.navinfo.collect.library.map.maphandler.MeasureLayerHandler
import com.navinfo.collect.library.map.handler.ViewportHandler import com.navinfo.collect.library.map.handler.ViewportHandler
@ -23,7 +25,6 @@ class NIMapController {
lateinit var viewportHandler: ViewportHandler lateinit var viewportHandler: ViewportHandler
lateinit var measureLayerHandler: MeasureLayerHandler lateinit var measureLayerHandler: MeasureLayerHandler
fun init(context: AppCompatActivity, mapView: NIMapView, options: NIMapOptions? = null, mapPath: String) { fun init(context: AppCompatActivity, mapView: NIMapView, options: NIMapOptions? = null, mapPath: String) {
Constant.MAP_PATH = mapPath Constant.MAP_PATH = mapPath
layerManagerHandler = LayerManagerHandler(context, mapView) layerManagerHandler = LayerManagerHandler(context, mapView)

View File

@ -13,7 +13,9 @@ import android.widget.RelativeLayout;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.navinfo.collect.library.R; import com.navinfo.collect.library.R;
import com.navinfo.collect.library.data.entity.NiLocation;
import com.navinfo.collect.library.map.layers.NaviMapScaleBar; import com.navinfo.collect.library.map.layers.NaviMapScaleBar;
import com.navinfo.collect.library.map.source.MapLifeNiLocationTileSource;
import org.oscim.android.MapPreferences; import org.oscim.android.MapPreferences;
import org.oscim.android.MapView; import org.oscim.android.MapView;
@ -25,10 +27,22 @@ import org.oscim.event.Gesture;
import org.oscim.event.GestureListener; import org.oscim.event.GestureListener;
import org.oscim.layers.GroupLayer; import org.oscim.layers.GroupLayer;
import org.oscim.layers.Layer; import org.oscim.layers.Layer;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.layers.tile.vector.OsmTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer; import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.layers.tile.vector.labeling.LabelTileLoaderHook;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.renderer.GLViewport; import org.oscim.renderer.GLViewport;
import org.oscim.theme.IRenderTheme;
import org.oscim.theme.ThemeLoader;
import org.oscim.theme.VtmThemes; import org.oscim.theme.VtmThemes;
import org.oscim.tiling.source.mapfile.MapFileTileSource;
import org.oscim.tiling.source.mapfile.MultiMapFileTileSource;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/** /**
@ -85,12 +99,11 @@ public final class NIMapView extends RelativeLayout {
// private Layer gridLayer; // private Layer gridLayer;
protected Context mContext; protected Context mContext;
/** /**
* 地图状态信息 * 地图状态信息
*/ */
private MapPreferences mPrefs; private MapPreferences mPrefs;
// protected String mapFilePath = Constant.ROOT_PATH + "/map"; protected String mapFilePath = "/map";
protected GroupLayer baseGroupLayer; // 用于盛放所有基础底图的图层组便于统一管理 protected GroupLayer baseGroupLayer; // 用于盛放所有基础底图的图层组便于统一管理
public void setOptions(NIMapOptions option) { public void setOptions(NIMapOptions option) {
@ -348,6 +361,10 @@ public final class NIMapView extends RelativeLayout {
mapPosition.setPosition(options.getCoordinate().getLatitude(), options.getCoordinate().getLongitude()); mapPosition.setPosition(options.getCoordinate().getLatitude(), options.getCoordinate().getLongitude());
getVtmMap().animator().animateTo(100, mapPosition); getVtmMap().animator().animateTo(100, mapPosition);
} }
List<NiLocation> list = new ArrayList<NiLocation>();
list.add(new NiLocation());
} }
@ -422,83 +439,84 @@ public final class NIMapView extends RelativeLayout {
// } // }
// } // }
// private void initVectorTileLayer() { /* public void initVectorTileLayer(){
// if (baseGroupLayer == null) { if (baseGroupLayer == null) {
// baseGroupLayer = new GroupLayer(getVtmMap()); baseGroupLayer = new GroupLayer(getVtmMap());
// } }
// for (Layer layer : baseGroupLayer.layers) { for (Layer layer : baseGroupLayer.layers) {
// getVtmMap().layers().remove(layer); getVtmMap().layers().remove(layer);
// } }
// baseGroupLayer.layers.clear(); baseGroupLayer.layers.clear();
//
// File baseMapFolder = new File(mapFilePath);
// if (!baseMapFolder.exists()) {
// return;
// }
//
// File[] mapFileList = baseMapFolder.listFiles();
//
// if (mapFileList != null && mapFileList.length > 0) {
//
// MultiMapFileTileSource multiMapFileTileSource = new MultiMapFileTileSource();
//
// for (File mapFile : mapFileList) {
//
// if (!mapFile.exists() || !mapFile.getName().endsWith(".map")) {
// continue;
// }
//
// MapFileTileSource mTileSource = new MapFileTileSource();
//
// mTileSource.setPreferredLanguage("zh");
//
// if (mTileSource.setMapFile(mapFile.getAbsolutePath())) {
// multiMapFileTileSource.add(mTileSource);
// }
//
// }
//
// VectorTileLayer baseMapLayer = new OsmTileLayer(getVtmMap());
// baseMapLayer.setTileSource(multiMapFileTileSource);
//
// baseGroupLayer.layers.add(baseMapLayer);
//
// if (getTheme(null) != null)
// baseMapLayer.setTheme(getTheme(null));
//
// baseGroupLayer.layers.add(new BuildingLayer(getVtmMap(), baseMapLayer));
// baseGroupLayer.layers.add(new LabelLayer(getVtmMap(), baseMapLayer));
//
// for (Layer layer : baseGroupLayer.layers) {
// if (layer instanceof LabelLayer) {
// getVtmMap().layers().add(layer, LAYER_GROUPS.VECTOR.groupIndex);
// } else {
// getVtmMap().layers().add(layer, LAYER_GROUPS.BASE_VECTOR.groupIndex);
// }
// }
// }
// }
// //获取渲染资源 File baseMapFolder = new File(mapFilePath);
// public IRenderTheme getTheme(final String styleId) { if (!baseMapFolder.exists()) {
// AssetsRenderTheme theme = new AssetsRenderTheme(mContext.getAssets(), null, "default.xml"); return;
// if (styleId == null || "".equals(styleId.trim())) { }
// switch (2) {
// case 0: File[] mapFileList = baseMapFolder.listFiles();
// theme = new AssetsRenderTheme(mContext.getAssets(), null, "default.xml");
// break; if (mapFileList != null && mapFileList.length > 0) {
// case 1:
// theme = new AssetsRenderTheme(mContext.getAssets(), null, "osmarender.xml"); MultiMapFileTileSource multiMapFileTileSource = new MultiMapFileTileSource();
// break;
// case 2: for (File mapFile : mapFileList) {
// theme = new AssetsRenderTheme(mContext.getAssets(), null, "tronrender.xml");
// break; if (!mapFile.exists() || !mapFile.getName().endsWith(".map")) {
// } continue;
// }
// }
// MapFileTileSource mTileSource = new MapFileTileSource();
// return ThemeLoader.load(theme);
// } mTileSource.setPreferredLanguage("zh");
if (mTileSource.setMapFile(mapFile.getAbsolutePath())) {
multiMapFileTileSource.add(mTileSource);
}
}
VectorTileLayer baseMapLayer = new OsmTileLayer(getVtmMap());
baseMapLayer.setTileSource(multiMapFileTileSource);
baseGroupLayer.layers.add(baseMapLayer);
if (getTheme(null) != null)
baseMapLayer.setTheme(getTheme(null));
baseGroupLayer.layers.add(new BuildingLayer(getVtmMap(), baseMapLayer));
baseGroupLayer.layers.add(new LabelLayer(getVtmMap(), baseMapLayer));
for (Layer layer : baseGroupLayer.layers) {
if (layer instanceof LabelLayer) {
getVtmMap().layers().add(layer, LAYER_GROUPS.VECTOR.groupIndex);
} else {
getVtmMap().layers().add(layer, LAYER_GROUPS.BASE.groupIndex);
}
}
}
}*/
//获取渲染资源
/*
public IRenderTheme getTheme(final String styleId) {
AssetsRenderTheme theme = new AssetsRenderTheme(mContext.getAssets(), null, "default.xml");
if (styleId == null || "".equals(styleId.trim())) {
switch (2) {
case 0:
theme = new AssetsRenderTheme(mContext.getAssets(), null, "default.xml");
break;
case 1:
theme = new AssetsRenderTheme(mContext.getAssets(), null, "osmarender.xml");
break;
case 2:
theme = new AssetsRenderTheme(mContext.getAssets(), null, "tronrender.xml");
break;
}
}
return ThemeLoader.load(theme);
}
*/
// public void addDefaultVectorTileLayer(MAP_THEME theme) { // public void addDefaultVectorTileLayer(MAP_THEME theme) {
// if (defaultVectorTileLayer != null) { // if (defaultVectorTileLayer != null) {
@ -969,4 +987,5 @@ public final class NIMapView extends RelativeLayout {
public void updateMap(boolean redraw) { public void updateMap(boolean redraw) {
mapView.map().updateMap(redraw); mapView.map().updateMap(redraw);
} }
} }

View File

@ -10,9 +10,11 @@ import androidx.lifecycle.lifecycleScope
import com.navinfo.collect.library.R import com.navinfo.collect.library.R
import com.navinfo.collect.library.data.entity.QsRecordBean import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.collect.library.map.NIMapView import com.navinfo.collect.library.map.NIMapView
import com.navinfo.collect.library.map.NIMapView.LAYER_GROUPS
import com.navinfo.collect.library.map.cluster.ClusterMarkerItem import com.navinfo.collect.library.map.cluster.ClusterMarkerItem
import com.navinfo.collect.library.map.cluster.ClusterMarkerRenderer import com.navinfo.collect.library.map.cluster.ClusterMarkerRenderer
import com.navinfo.collect.library.map.layers.MyItemizedLayer import com.navinfo.collect.library.map.layers.MyItemizedLayer
import com.navinfo.collect.library.map.source.MapLifeNiLocationTileSource
import com.navinfo.collect.library.map.source.NavinfoMultiMapFileTileSource import com.navinfo.collect.library.map.source.NavinfoMultiMapFileTileSource
import com.navinfo.collect.library.system.Constant import com.navinfo.collect.library.system.Constant
import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.collect.library.utils.GeometryTools
@ -34,6 +36,7 @@ import org.oscim.layers.marker.*
import org.oscim.layers.tile.buildings.BuildingLayer import org.oscim.layers.tile.buildings.BuildingLayer
import org.oscim.layers.tile.vector.VectorTileLayer import org.oscim.layers.tile.vector.VectorTileLayer
import org.oscim.layers.tile.vector.labeling.LabelLayer import org.oscim.layers.tile.vector.labeling.LabelLayer
import org.oscim.layers.tile.vector.labeling.LabelTileLoaderHook
import org.oscim.tiling.source.OkHttpEngine.OkHttpFactory import org.oscim.tiling.source.OkHttpEngine.OkHttpFactory
import org.oscim.tiling.source.mapfile.MapFileTileSource import org.oscim.tiling.source.mapfile.MapFileTileSource
import java.io.File import java.io.File
@ -64,6 +67,21 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
private lateinit var markerRendererFactory: MarkerRendererFactory private lateinit var markerRendererFactory: MarkerRendererFactory
private val markerItemsNames = mutableListOf<MarkerInterface>() private val markerItemsNames = mutableListOf<MarkerInterface>()
/**
* 轨迹渲染图层
*/
private lateinit var mapLifeNiLocationTileSource: MapLifeNiLocationTileSource
/**
* 轨迹数据图层
*/
private lateinit var vectorNiLocationTileLayer: VectorTileLayer
/**
* 增加作业渲染
*/
private lateinit var labelNiLocationLayer: LabelLayer
/** /**
* 文字大小 * 文字大小
*/ */
@ -496,6 +514,25 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
} }
} }
//显示轨迹图层
fun showNiLocationLayer(dbName: String?) {
if (mapLifeNiLocationTileSource == null) {
mapLifeNiLocationTileSource = MapLifeNiLocationTileSource(mContext, dbName)
}
if (vectorNiLocationTileLayer == null) {
vectorNiLocationTileLayer = VectorTileLayer(mMapView.vtmMap, mapLifeNiLocationTileSource)
}
if (labelNiLocationLayer == null) {
labelNiLocationLayer =
LabelLayer(mMapView.vtmMap, vectorNiLocationTileLayer, LabelTileLoaderHook(), 15)
}
addLayer(labelNiLocationLayer, NIMapView.LAYER_GROUPS.VECTOR)
}
//隐藏轨迹图层
fun hideNiLocationLayer() {
removeLayer(labelNiLocationLayer)
}
} }

View File

@ -9,6 +9,7 @@ import com.baidu.location.BDLocation
import com.baidu.location.LocationClient import com.baidu.location.LocationClient
import com.baidu.location.LocationClientOption import com.baidu.location.LocationClientOption
import com.baidu.location.LocationClientOption.LocationMode import com.baidu.location.LocationClientOption.LocationMode
import com.navinfo.collect.library.data.entity.NiLocation
import com.navinfo.collect.library.map.GeoPoint import com.navinfo.collect.library.map.GeoPoint
import com.navinfo.collect.library.map.NIMapView import com.navinfo.collect.library.map.NIMapView
import org.oscim.layers.LocationLayer import org.oscim.layers.LocationLayer
@ -20,6 +21,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : Bas
private var bFirst = true private var bFirst = true
private val mLocationLayer: LocationLayer = LocationLayer(mMapView.vtmMap) private val mLocationLayer: LocationLayer = LocationLayer(mMapView.vtmMap)
private lateinit var locationClient: LocationClient private lateinit var locationClient: LocationClient
private lateinit var niLocationListener: NiLocationListener
init { init {
///添加定位图层到地图,[NIMapView.LAYER_GROUPS.NAVIGATION] 是最上层layer组 ///添加定位图层到地图,[NIMapView.LAYER_GROUPS.NAVIGATION] 是最上层layer组
@ -58,6 +60,10 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : Bas
mLocationLayer.setPosition( mLocationLayer.setPosition(
it.latitude, it.longitude, it.radius it.latitude, it.longitude, it.radius
) )
Log.e("qj","location==${it.longitude}==errorCode===$errorCode===${it.locTypeDescription}")
if(niLocationListener!=null){
getCurrentNiLocation()?.let { it1 -> niLocationListener.call(it1) }
}
//第一次定位成功显示当前位置 //第一次定位成功显示当前位置
if (this.bFirst) { if (this.bFirst) {
animateToCurrentPosition(16.0) animateToCurrentPosition(16.0)
@ -102,6 +108,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : Bas
locationClient.locOption = locationOption locationClient.locOption = locationOption
} catch (e: Throwable) { } catch (e: Throwable) {
Toast.makeText(mContext, "定位初始化失败 $e", Toast.LENGTH_SHORT) Toast.makeText(mContext, "定位初始化失败 $e", Toast.LENGTH_SHORT)
Log.e("qj","定位初始化失败$e")
} }
} }
@ -151,6 +158,39 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : Bas
} }
return null return null
} }
//获取当前定位对象
fun getCurrentNiLocation(): NiLocation? {
if(mCurrentLocation!=null){
val niLocation:NiLocation = NiLocation()
niLocation.longitude = mCurrentLocation!!.longitude
niLocation.latitude = mCurrentLocation!!.latitude
niLocation.direction = mCurrentLocation!!.direction.toDouble()
niLocation.altitude = mCurrentLocation!!.altitude
niLocation.radius = mCurrentLocation!!.radius.toDouble()
niLocation.time = mCurrentLocation!!.time
niLocation.adCode = mCurrentLocation!!.adCode
niLocation.country = mCurrentLocation!!.country
niLocation.province = mCurrentLocation!!.province
niLocation.city = mCurrentLocation!!.city
niLocation.district = mCurrentLocation!!.district
niLocation.cityCode = mCurrentLocation!!.cityCode
niLocation.floor = mCurrentLocation!!.floor
niLocation.satelliteNumber = mCurrentLocation!!.satelliteNumber
niLocation.address = mCurrentLocation!!.addrStr
niLocation.street = mCurrentLocation!!.street
niLocation.town = mCurrentLocation!!.town
niLocation.streetNumber = mCurrentLocation!!.streetNumber
niLocation.errorCode = mCurrentLocation!!.locType.toString()
return niLocation
}
return null
}
//设置定位回调
fun setNiLocationListener(listener: NiLocationListener){
niLocationListener = listener
}
} }
/** /**
@ -162,3 +202,13 @@ private class MyLocationListener(callback: (BDLocation) -> Unit) : BDAbstractLoc
call(location) call(location)
} }
} }
/**
* 实现定位回调
*/
public class NiLocationListener(callback: (NiLocation) -> Unit){
val call = callback;
fun onReceiveLocation(location: NiLocation) {
call(location)
}
}

View File

@ -40,8 +40,6 @@ public class MapLifeNiLocationTileDataSource implements ITileDataSource {
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
@Override @Override
public void query(MapTile tile, ITileDataSink mapDataSink) { public void query(MapTile tile, ITileDataSink mapDataSink) {
// 获取tile对应的坐标范围 // 获取tile对应的坐标范围
if (tile.zoomLevel >= 10 && tile.zoomLevel <= 20) { if (tile.zoomLevel >= 10 && tile.zoomLevel <= 20) {

View File

@ -2,7 +2,6 @@ package com.navinfo.collect.library.utils;
import android.graphics.Point; import android.graphics.Point;
import android.util.Log; import android.util.Log;
import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.GeometryFactory;
@ -15,7 +14,6 @@ import org.locationtech.jts.io.WKTReader;
import org.locationtech.jts.operation.linemerge.LineMerger; import org.locationtech.jts.operation.linemerge.LineMerger;
import org.oscim.core.GeoPoint; import org.oscim.core.GeoPoint;
import org.oscim.map.Map; import org.oscim.map.Map;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -69,6 +67,7 @@ public class GeometryTools {
} }
/** /**
* 返回点几何 * 返回点几何
* *