缩放不在android中的scrollview内的地图中工作

时间:2014-06-28 19:36:28

标签: android

我在做什么 ::

  • 我正在使用mapquest小部件和api for maps
  • 我正在使用scrollview中的mapwidget
  • 我也可以点击地图上的地图标记

发生了什么 ::

  • 我无法缩放地图,
  • 我也可以看到缩放按钮clickit但它不会缩放

::

MyFragment.java

public class MyFragment extends Fragment{

    protected MapView map;
    AnnotationView annotation;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment, container,false);
        map = (MapView) rootView.findViewById(R.id.map);
        map.getController().setZoom(10);
        map.getController().setCenter(new GeoPoint(12.918609,77.668912));
        map.setBuiltInZoomControls(true);

        // initialize the annotation to be shown later 
        annotation = new AnnotationView(map);

        //addPolyOverlay();
        // addLineOverlay();

        return rootView;
    }

    @Override
    public void onStart() {
        // TODO Auto-generated method stub
        super.onStart();


        addPoiOverlay();
    }


    // add an itemized overlay to map 
    private void addPoiOverlay() {

        // use a custom POI marker by referencing the bitmap file directly,
        // using the filename as the resource ID 
        Drawable icon = getResources().getDrawable(R.drawable.distance_icon_large);
        final DefaultItemizedOverlay poiOverlay = new DefaultItemizedOverlay(icon);

        // set GeoPoints and title/snippet to be used in the annotation view 
        OverlayItem poi1 = new OverlayItem(new GeoPoint (12.918609,77.668912), "Denver, Colorado", "MapQuest Headquarters");
        poiOverlay.addItem(poi1);
        OverlayItem poi2 = new OverlayItem(new GeoPoint (12.956868,77.701148), "Palo Alto, California", "AOL Offices");
        poiOverlay.addItem(poi2);

        // add a tap listener for the POI overlay 
        poiOverlay.setTapListener(new ItemizedOverlay.OverlayTapListener() {
            @Override
            public void onTap(GeoPoint pt, MapView mapView) {
                // when tapped, show the annotation for the overlayItem 
                int lastTouchedIndex = poiOverlay.getLastFocusedIndex();
                if(lastTouchedIndex>-1){
                    OverlayItem tapped = poiOverlay.getItem(lastTouchedIndex);
                    annotation.showAnnotationView(tapped);
                }
            }
        });



        map.getOverlays().add(poiOverlay);
    }

}

fragment.xml之

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <com.mapquest.android.maps.MapView
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/map"
                android:layout_width="match_parent"
                android:layout_height="700dp"
                android:apiKey="My-Key"
                android:focusableInTouchMode="true"
                android:clickable="true"
                android:padding="5dp" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您可能需要覆盖scrollview中的touchlistener,然后将这些事件转发到mapview(如果适用)。问题是,scrollview正在接管触摸侦听器,而没有正确地将其转发出去。

滚动视图里面的mapview看起来很麻烦......