对于OSMdroid MapView的双指旋转 [英] Two finger rotation for OSMdroid mapview
问题描述
我想提出两个手指旋转使用osmdroid我的离线地图。我是新来使用地图Android版。我有一个的GeoTIFF,我打算使用NDK中提取信息,后来将其发送到JAVA。我需要使用的GeoPoint使用指南针以及与真北达对齐。我怎样才能进行,任何帮助?
我也试试这个:
Android的双指旋转
例如,但没有运气,我的应用程序无法检测到任何两个手指的事件。
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); mResourceProxy =新DefaultResourceProxyImpl(getApplicationContext());
的setContentView(R.layout.activity_main);
图形页面=(图形页面)findViewById(R.id.mapview); //图形页面中,触摸Utilities
mapView.setClickable(真);
mapView.setBuiltInZoomControls(真);
mapView.setMultiTouchControls(真); //设置的初始缩放级别,取决于你的需要
。mapView.getController()setZoom(nMyZoom); //显示位置叠加
/ *覆盖逐项* /
{
/ *创建显示在部分城市的一些标记静态ItemizedOverlay。 * /
最终的ArrayList< OverlayItem>项目=新的ArrayList< OverlayItem>();
items.add(新OverlayItem(Fruchthalle,凯泽斯劳滕,新的GeoPoint(nMyLat,nMyLong))); / * OnTapListener的标记,显示了一个简单的烤面包。 * /
this.mMyLocationOverlay =新ItemizedIconOverlay< OverlayItem>(物品,
新ItemizedIconOverlay.OnItemGestureListener< OverlayItem>(){
@覆盖
公共布尔onItemSingleTapUp(最终诠释指数,最终OverlayItem项){
Toast.makeText(
MainActivity.this,
地方+ item.getTitle()+'(指数=+指数
+)得到了单抽头起来,Toast.LENGTH_LONG).show();
返回true; //我们'处理'此事件。
} @覆盖
公共布尔onItemLong preSS(最终诠释指数,最终OverlayItem项){
Toast.makeText(
MainActivity.this,
地方+ item.getTitle()+'(指数=+指数
+)长了pressed,Toast.LENGTH_LONG).show();
返回false;
}
},mResourceProxy);
。this.mapView.getOverlays()加(this.mMyLocationOverlay);
}
你最近有没有看的 OpenStreetMapViewer 示例应用程序?还有就是<一个href=\"https://$c$c.google.com/p/osmdroid/source/browse/trunk/OpenStreetMapViewer/src/org/osmdroid/RotationGestureOverlay.java\"相对=nofollow> RotationGestureOverlay 在那里,覆盖专门展示了如何做到这一点。这是不顺利,因为我想它,但它会做的工作。
I'm trying to make two finger rotation for my offline maps using osmdroid. I'm new to using maps for android. I have a geoTIFF, I'm planning to extract info using NDK and later send it to JAVA. I need to use the geoPoint to align with True North Up using compass as well. How can I proceed, any help?
I did try this: Android Two finger rotation example, but no luck, my app was not able to detect any two finger event.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
setContentView(R.layout.activity_main);
mapView = (MapView)findViewById(R.id.mapview);
//Mapview touch utilities
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
//set initial zoom-level, depends on your need
mapView.getController().setZoom(nMyZoom);
//Display Position Overlay
/* Itemized Overlay */
{
/* Create a static ItemizedOverlay showing a some Markers on some cities. */
final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
items.add(new OverlayItem("Fruchthalle", "Kaiserslautern", new GeoPoint(nMyLat, nMyLong)));
/* OnTapListener for the Markers, shows a simple Toast. */
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
Toast.makeText(
MainActivity.this,
"Place '" + item.getTitle()+ "' (index=" + index
+ ") got single tapped up", Toast.LENGTH_LONG).show();
return true; // We 'handled' this event.
}
@Override
public boolean onItemLongPress(final int index, final OverlayItem item) {
Toast.makeText(
MainActivity.this,
"Place '" + item.getTitle() + "' (index=" + index
+ ") got long pressed", Toast.LENGTH_LONG).show();
return false;
}
}, mResourceProxy);
this.mapView.getOverlays().add(this.mMyLocationOverlay);
}
Have you taken a look at the OpenStreetMapViewer sample app? There is the RotationGestureOverlay overlay in there that specifically shows how to do this. It isn't as smooth as I would like it, but it will do the job.
这篇关于对于OSMdroid MapView的双指旋转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!