【问题标题】:Google Map Api v2 Error谷歌地图 API v2 错误
【发布时间】:2013-02-15 19:48:28
【问题描述】:

我在片段中的以下代码执行时遇到 numm 指针异常。

 MapFragment mapFragment = MapFragment.newInstance();
 FragmentTransaction fragmentTransaction =  getFragmentManager().beginTransaction();
 fragmentTransaction.add(R.id.container1, mapFragment);
 fragmentTransaction.commit();
 mGoogleMap=mapFragment.getMap();
 mGoogleMap.addMarker(new MarkerOptions().draggable(true).position(new LatLng(22.03, 72.56)).title("hello world").snippet("Ahmedabad").icon(BitmapDescriptorFactory.fromResource(R.drawable.wifi)));

03-01 15:59:49.370: E/AndroidRuntime(12577): 由: java.lang.NullPointerException 03-01 15:59:49.370: E/AndroidRuntime(12577):在 com.tfick.fragment.PoiFragment.onCreateView(PoiFragment.java:64) 03-01 15:59:49.370:E/AndroidRuntime(12577):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 03-01 15:59:49.370:E/AndroidRuntime(12577):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 03-01 15:59:49.370:E/AndroidRuntime(12577):在 android.app.BackStackRecord.run(BackStackRecord.java:635) 03-01 15:59:49.370:E/AndroidRuntime(12577):在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)

【问题讨论】:

  • 代码错误。什么是PoiFragment?问题就在那里。
  • poi片段是片段类的名称
  • 当我从代码中删除最后两行时它工作得很好,但是当添加最后两行时它停止工作

标签: android android-fragments google-maps-markers google-maps-api-2


【解决方案1】:

似乎getMap() 返回null。 可能的解决方案:

  • 您是否通过GooglePlayServicesUtil.isGooglePlayServicesAvailable(context) 确认 Google Play 服务可用?
  • 地图可能尚未初始化,请在生命周期的后期尝试getMap(),例如onResume()

【讨论】:

  • MapFragment mapFragment = MapFragment.newInstance(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.container1, mapFragment);片段交易.commit();这种和平的代码工作正常,但是当我 tro getmap() 它不会这样做。
  • 是的,那是因为 getMap() 返回 null。你尝试过我的建议吗?
【解决方案2】:

我已经解决了问题。这是解决方案Google Maps Android API v2 - Add a marker failed

【讨论】:

  • 是的,但原因是什么。
【解决方案3】:

这是我发现的问题的解决方案。

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.tfick.android.R;

public class PoiFragment extends MapFragment {
    /*object of google map*/
    public GoogleMap mGoogleMap;
    /* summy location*/
    private static final LatLng SYDNEY = new LatLng(23.03, 72.62);


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        return super.onCreateView(inflater, container, savedInstanceState);
    }

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

        if (getMap() != null) {
            Log.d(getClass().getSimpleName(), "Map ready for use!");

            mGoogleMap = getMap();

            /* cretaing custom camera position */

            CameraPosition mCameraPosition = new CameraPosition.Builder()
                    .target(SYDNEY).bearing(0).tilt(30).build();
            Log.i("gmap", mGoogleMap.toString());

            /* setting custom camera position */

            mGoogleMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(mCameraPosition));

            /* adding custom marker on the map. */
            mGoogleMap
                    .addMarker(new MarkerOptions()
                            .draggable(true)
                            .position(new LatLng(22.03, 72.56))
                            .title("hello world")
                            .snippet("Ahmedabad")
                            .icon(BitmapDescriptorFactory
                                    .fromResource(R.drawable.wifi)));

            mGoogleMap
                    .addMarker(new MarkerOptions()
                            .draggable(true)
                            .position(new LatLng(23.03, 78.10))
                            .title("hello world")
                            .snippet("Baroda")
                            .icon(BitmapDescriptorFactory
                                    .fromResource(R.drawable.wifi)));

        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2013-04-16
    • 2014-08-11
    • 2015-07-25
    相关资源
    最近更新 更多