MapView在片段android中无法正常工作

时间:2013-09-20 11:12:53

标签: android android-mapview

您好我的应用程序中显示一个片段。在那个片段里面我正在显示地图。所以我的代码看起来像:

       

   <RelativeLayout 
       android:layout_height="wrap_content"
       android:layout_width="match_parent"
       android:id="@+id/innerrelativelay"
       android:padding="10dp">

       <TextView
       android:id="@+id/storename" 
       android:layout_height="wrap_content"
       android:layout_width="wrap_content"
       android:text="Store Name:"
       android:textSize="15sp"
       />
       <TextView
       android:id="@+id/storeaddress" 
       android:layout_height="wrap_content"
       android:layout_width="wrap_content"
       android:layout_below="@+id/storename"
       android:text="Store Address:"
       android:textSize="15sp"
       />
   </RelativeLayout>

<com.google.android.gms.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mapView" 
    android:layout_below="@+id/innerrelativelay"
   />

</RelativeLayout>

和片段看起来像:

public class MyAccount extends SherlockFragment {

    MapView map;
    GoogleMap mMap;
    TextView storeName,storeAddress;
    SharedPreferences storeInfo,authenticationInfo;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.maplayout, container, false);
        map = (MapView) v.findViewById(R.id.mapView);
        map.onCreate(savedInstanceState);
        mMap = map.getMap();
        map.onCreate(savedInstanceState);
        mMap.getUiSettings().setMyLocationButtonEnabled(false);
        mMap.setMyLocationEnabled(true);

        try {
            MapsInitializer.initialize(this.getActivity());
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }

        // Updates the location and zoom of the MapView
        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10);
        mMap.animateCamera(cameraUpdate);
        mMap.setMyLocationEnabled(true);

        storeName = (TextView)v.findViewById(R.id.storename);
        storeAddress = (TextView)v.findViewById(R.id.storeaddress);

        storeInfo = getActivity().getSharedPreferences(CommonSharedPref.QCMERCHANT_STOREID, 0);
        authenticationInfo = getActivity().getSharedPreferences(CommonSharedPref.QCMERCHANT_AUTHENTICATION_INFO, 0);

        storeName.setText(storeName.getText().toString()+storeInfo.getString(CommonSharedPref.QCMERCHANT_STORENAME, ""));
        storeAddress.setText(storeAddress.getText().toString()+storeInfo.getString(CommonSharedPref.QCMERCHANT_ADDRESS1, "")
                +"\n"+storeInfo.getString(CommonSharedPref.QCMERCHANT_ADDRESS1, ""));


        return v;
    }
}

它显示我正确映射但创建标记,显示当前位置或在给定位置移动相机不能正常工作。 这该怎么做。需要帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

<强>更新 尝试将片段的布局更改为

<fragment
    android:id="@+id/mapView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.MapFragment" />

似乎你还没有初始化标记。这就是为什么标记不可见.. 如果你需要指导如何做到这一点..有一个非常好的tutrial页面......

http://www.vogella.com/articles/AndroidGoogleMaps/article.html

从这里https://developers.google.com/maps/documentation/android/v1/hello-mapview,您可以看到

  

谷歌地图Android API版本1已正式发布   自2012年12月3日起弃用

所以你不应该再使用MapView了。我建议你改用MapFragment。请在此处查看优秀文档:https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment