Scrollview中的Android Google Maps v2在某些设备上显示灰色图块

问题描述 投票:7回答:2

Scrollview中有Android Google Maps v2它适用于许多设备,但在某些设备上显示灰色瓷砖API KEY正确,

要在Scrollview中使用Google Maps V2,应使用自定义类扩展SupportMapFragment,如下所示:

public class WorkaroundMapFragment extends SupportMapFragment {
    private OnTouchListener mListener;

    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {
        View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);

        TouchableWrapper frameLayout = new TouchableWrapper(getActivity());

        frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));

        ((ViewGroup) layout).addView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        return layout;
    }

    public void setListener(OnTouchListener listener) {
        mListener = listener;
    }

    public interface OnTouchListener {
        public abstract void onTouch();
    }

    public class TouchableWrapper extends FrameLayout {

        public TouchableWrapper(Context context) {
            super(context);
        }

        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    mListener.onTouch();
                    break;
                case MotionEvent.ACTION_UP:
                    mListener.onTouch();
                    break;
            }
            return super.dispatchTouchEvent(event);
        }
    }
}

还设置:

    ((WorkaroundMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).setListener(new WorkaroundMapFragment.OnTouchListener() {
            @Override
            public void onTouch() {
                mScrollViewDa.requestDisallowInterceptTouchEvent(true);
            }
        });

下面的图片由用户拍摄,Android版本:4.2.2,设备:Samsung Grand 2

应用程序测试:三星Galaxy Tab 2 10.1“:4.0.3和华硕Fonepad 7”平板电脑:5.0.1并且运行良好

android:minSdkVersion="10"

enter image description here

android google-maps
2个回答
1
投票

对于类似的问题,我采取了不同的方法。

是的,你是对的,你不能直接将地图放到ScrollView中......但是你可以拥有一个FrameLayout并在运行时用地图替换它。像这样:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="-100dp"
    android:layout_marginBottom="-100dp"
    android:id="@+id/mapViewDetail"
    android:scaleType="centerCrop"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_above="@+id/bottom_layout"
    tools:context="com.yourpackage.app.HomeActivity"
    tools:ignore="MergeRootFrame" />

然后我创建了一个自定义地图,因为我需要一些“调整”(如果您使用默认地图,可以避免这一步):

public abstract class MiniMapFragment extends MapFragment {

    @Override
    public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
        View v = super.onCreateView(arg0, arg1, arg2);
        initMap();
        return v;
    }

    public abstract void initMap();
}

然后,在我刚刚添加的片段中:

    MiniMapFragment mMapFragment = new MiniMapFragment() {
        @Override
        public void initMap() {
            googleMap = getMap();
            getMap().getUiSettings().setMyLocationButtonEnabled(false);
            getMap().getUiSettings().setZoomControlsEnabled(false);
            getMap().getUiSettings().setScrollGesturesEnabled(false);
        }
    };

    FragmentTransaction fragmentTransaction =
            getFragmentManager().beginTransaction();
    fragmentTransaction.add(R.id.mapViewDetail, mMapFragment);
    fragmentTransaction.commit();
    getFragmentManager().executePendingTransactions();

    MapsInitializer.initialize(this);

而你应该没事。


1
投票

我不完全确定这是否能回答你的问题,但值得研究。

根据您的问题和评论,它似乎是伊朗用户在特定设备上接收灰显的地图。由于我不确定用户的确切位置,因此我对伊朗及周边地区的Google地图的可访问性进行了一些研究。 该用户可能正在尝试定位故意变灰的地图。

Satellite map images with missing or unclear data

并非所有内容都显示在Google地图上。

Blurred Out: 51 Things You Aren't Allowed to See on Google Maps

几年前,消费者在伊朗使用谷歌和伊朗希望创建一个伊斯兰地球地图。

Iran plans 'Islamic Google Earth'

但是,似乎已经解决了在该区域可以访问Google地图的用户。

这也是伊朗附近美军基地的地图。其中有很多,至少可能是模糊的,如果不是灰色的话。

American Military Bases Near Iran

同样在邻国的伊拉克,也存在过时的空中镜头问题。

when Iraq will get new satellite imagery update

此外,伊朗的互联网审查政策和“智能过滤”的使用

Iran expands 'smart' Internet censorship我不确定这是否会影响某些地区对谷歌地图的访问。

我建议询问用户的具体位置,或询问地图是否出现在某些地方而不是其他地方。

希望这可以帮助。

编辑

Galaxy Grand Duos (GT-I9082)最近才更新到4.2.2。

multiple issues with the jelly bean update for the Samsung Grand 2

如果您的用户最近升级了他的手机,则可能值得检查一下。 虽然以下链接并非特定于谷歌地图,但它仍然有用。 Samsung Galaxy Grand: Slow Performance after JB 4.2.2 upgrade.

除了调查特定的设备和我之前提到的任何问题之外,在这个阶段我没有什么可以提供给你的。

© www.soinside.com 2019 - 2024. All rights reserved.