作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在研究 nutiteq map ,但随着位置的变化,我无法绘制折线。
到目前为止我试过:
@Override
public void onLocationChanged(Location location)
{
MapPos lineLocation = mapView.getLayers().getBaseProjection().fromWgs84(location.getLongitude(), location.getLatitude());
//arr_lat_long.add(new MapPos(lat, lng));
arr_lat_long.add(lineLocation);
Toast.makeText(getApplicationContext(), "Array list lat Lng" + arr_lat_long, 1000).show();
if (arr_lat_long.size() > 2)
{
GeometryLayer geoLayer = new GeometryLayer(new EPSG4326());
mapView.getLayers().addLayer(geoLayer);
LineStyle lineStyle = LineStyle.builder().setLineJoinMode(LineStyle.ROUND_LINEJOIN).build();
//Label label = new DefaultLabel("Line", "Here is a line");
Line line = new Line(arr_lat_long, null, lineStyle, null);
geoLayer.add(line);
}
}
最佳答案
问题是层投影是EPSG4326,但是你添加了lineLocation坐标,它被转换为baseProjection(基础层的投影),通常是EPSG3857。由于您的 geoLayer 已经是 EPSG4326,并且 GPS 坐标也是 EPSG4326 (WGS84),那么这就足够了:
MapPos lineLocation = new MapPos(location.getLongitude(), location.getLatitude());
另外:在这里,您要为每个 GPS 位置坐标添加新层、定义样式并添加新线(每个下一个长 1 点),每秒发生一次。所以你迟早会失去内存。所以我建议重写你的代码:制作 geoLayer、lineStyle 和 line to fields。并在您的应用程序/ map View 生命周期内更新同一行对象:
line.setVertexList(arr_lat_long);
关于android - nutiteq map 上的折线 onLocattionChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23755821/
我一直在研究 nutiteq map ,但随着位置的变化,我无法绘制折线。 到目前为止我试过: @Override public void onLocationChanged(Location loc
我是一名优秀的程序员,十分优秀!