谷歌地图在Activity和fragment中的简单使用

ps:官方Demo及网上大部分内容都是在activity中的使用,现在对这部分内容进行总结:

1.在activity中的使用

implementation 'com.google.android.gms:play-services-maps:16.0.0'


public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        /**
         * 在这里传经纬度即可
         */
        LatLng sydney = new LatLng(-37.812439, 144.972755);
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15));

        googleMap.addMarker(new MarkerOptions()
//                .title("Sydney")
//                .snippet("The most populous city in Australia.")
                .position(sydney));
    }
}

permission

    
    
    
    

key

 

-------------------------activity 使用 game over-------------------------

在fragment中的使用


在fragment中,只需要将activity中onCreate代码,改成在fragment中onCreateView里写,代码如下,其它代码不变。。。

SupportMapFragment mapFragment= (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
        if(mapFragment == null){
            FragmentManager fm= getFragmentManager();
            FragmentTransaction ft= fm.beginTransaction();
            mapFragment= SupportMapFragment.newInstance();
            ft.replace(R.id.map, mapFragment).commit();
        }
        mapFragment.getMapAsync(this);

ps:如果需要用户体验良好,需要处理事件冲突,地图外层可能有scrollview,可能用户在滑动地图的时候,scrollview进行了滑动。我这里是NestedScrollView,代码如下(scrollview处理方法一样):

package com.example.aiyang.toolbar.utlis;

import android.content.Context;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;
import android.view.MotionEvent;

/**
 * @创建者 $ sloop on 2018/12/25.
 * @创建时间 2018/12/25
 *
 * 解决谷歌地图在NestedScrollView中事件冲突
 */
public class MyNestedScrollView extends NestedScrollView {
    public MyNestedScrollView(Context context) {
        super(context);
    }

    public MyNestedScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyNestedScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent. ACTION_UP) {
            requestDisallowInterceptTouchEvent( false); //手离开地图的时候不拦截scrollview的touch事件,这样手指滑动的时候scrollview就会滑动
        } else {
            requestDisallowInterceptTouchEvent( true); //底层view调用此方法后,true表示父层View的touch事件将不会被触发,父View不拦截事件,由子view自己处理
        }
        return false;
    }
}

你可能感兴趣的:(谷歌地图在Activity和fragment中的简单使用)