对于OSMdroid MapView的双指旋转 [英] Two finger rotation for OSMdroid mapview

查看:416
本文介绍了对于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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆