获取在地图上单击的位置的经纬度 forge 0.5.1 MapView
Get the Latitude and Longitude of a position clicked on a maps forge 0.5.1 MapView
我使用 maps forge 0.5.1 库 (api reference)
我已按照所有官方说明进行操作,但遇到以下问题:
我在
上附加了一个 onTouchListener
(org.mapsforge.map.android.view.MapView)mapView
但是当我尝试调用方法 mapView.getProjection() 时,我收到错误消息“无法解析方法 getProjection()。即使在许多在线示例中调用了该方法,也没有官方 api 参考或 MapView.class。
org.mapsforge.map.android.view.MapView
org.mapsforge.map.android.view.MapView mapView;
mapView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent ev) {
int actionType = ev.getAction();
switch (actionType) {
case MotionEvent.ACTION_DOWN:
return false;
case MotionEvent.ACTION_UP:
mapView.getProjection(); // the error is here
return true;
case MotionEvent.ACTION_MOVE:
return false;
}
return false;
}
});
有没有其他方法可以使用 mapsforge lib 获取点击点的经纬度?难道我做错了什么?
如果点击后无法获取坐标,我认为图书馆缺少一些非常重要的东西。
谢谢
您确定导入了正确的 MapView 吗?有一个 Google 版本的 MapView 没有那个功能,如果你导入它可能会认为它是错误的 class。
使用
new MapViewProjection(mapView).fromPixels(double x, double y);
他们在 0.4 左右的版本中反转了链接 - 现在不是从地图视图获取投影,而是将地图视图传递给投影。
你可以利用TileRendererLayer
的onTap
事件,这样你就不需要处理``View.onTouch事件,后者更难识别单击/ 点击。
// tile renderer layer using internal render theme
MapDataStore mapDataStore = new MapFile(filename);
TileRendererLayer tileRendererLayer =
new TileRendererLayer(tileCache,
mapDataStore,
this.mapView.getModel().mapViewPosition,
AndroidGraphicFactory.INSTANCE) {
@Override
public boolean onTap(LatLong tapLatLong, Point layerXY, Point tapXY) {
ShowTapLocation(tapLatLong);
return true;
}
};
我使用 maps forge 0.5.1 库 (api reference) 我已按照所有官方说明进行操作,但遇到以下问题:
我在
上附加了一个 onTouchListener(org.mapsforge.map.android.view.MapView)mapView
但是当我尝试调用方法 mapView.getProjection() 时,我收到错误消息“无法解析方法 getProjection()。即使在许多在线示例中调用了该方法,也没有官方 api 参考或 MapView.class。 org.mapsforge.map.android.view.MapView
org.mapsforge.map.android.view.MapView mapView;
mapView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent ev) {
int actionType = ev.getAction();
switch (actionType) {
case MotionEvent.ACTION_DOWN:
return false;
case MotionEvent.ACTION_UP:
mapView.getProjection(); // the error is here
return true;
case MotionEvent.ACTION_MOVE:
return false;
}
return false;
}
});
有没有其他方法可以使用 mapsforge lib 获取点击点的经纬度?难道我做错了什么? 如果点击后无法获取坐标,我认为图书馆缺少一些非常重要的东西。
谢谢
您确定导入了正确的 MapView 吗?有一个 Google 版本的 MapView 没有那个功能,如果你导入它可能会认为它是错误的 class。
使用
new MapViewProjection(mapView).fromPixels(double x, double y);
他们在 0.4 左右的版本中反转了链接 - 现在不是从地图视图获取投影,而是将地图视图传递给投影。
你可以利用TileRendererLayer
的onTap
事件,这样你就不需要处理``View.onTouch事件,后者更难识别单击/ 点击。
// tile renderer layer using internal render theme
MapDataStore mapDataStore = new MapFile(filename);
TileRendererLayer tileRendererLayer =
new TileRendererLayer(tileCache,
mapDataStore,
this.mapView.getModel().mapViewPosition,
AndroidGraphicFactory.INSTANCE) {
@Override
public boolean onTap(LatLong tapLatLong, Point layerXY, Point tapXY) {
ShowTapLocation(tapLatLong);
return true;
}
};