如何在片段(地图)中获取setOnMyLocation按钮

时间:2016-10-21 06:54:21

标签: android google-maps android-fragments

我有Map我想要gps符号(当用户点击此符号时,它会将用户带到当前位置)。我可以在活动中完成它并且它在活动中工作正常但它在Fragment中创建问题。 CASE 1 :如果我在onCreateView方法中编写以下代码,则会在googleMap初始化之前调用它,以便我获得空指针异常。

((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.googlemap)).getMapAsync(this);
if(googleMap!=null){
    googleMap.setMyLocationEnabled(true);
    googleMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
        @Override
        public boolean onMyLocationButtonClick() {
            if(marker!=null){
                marker.remove();
            }
            return false;
        }
    });
}

@Override
public void onMapReady(final GoogleMap googleMap) {
    this.googleMap=googleMap;
    googleMap.setOnMyLocationChangeListener(myLocationChangeListener);
    Location myLocation = getLastKnownLocation();
}

案例2 如果我在onMapready写这封信,那么即使不点击它,它也会自动转到当前位置。

任何想法?

2 个答案:

答案 0 :(得分:1)

@Override
public void onMapReady(final GoogleMap googleMap) {
    this.googleMap=googleMap;
    this.googleMap.setMyLocationEnabled(true); // this line shows the current location button
    googleMap.setOnMyLocationChangeListener(myLocationChangeListener);
    Location myLocation = getLastKnownLocation();
}

答案 1 :(得分:0)

通过从onMapReady中删除googleMap.setOnMyLocationChangeListener(myLocationChangeList ener)来解决问题