(安卓系统)如何在地图视图中设置默认的gps位置



所以我有一个应用程序,它必须显示许多商店的位置,这取决于你选择的商店。带有地图View的页面的XML布局是ViewFlipper的一部分,而带有地图布局的部分是:

<RelativeLayout
    android:id="@+id/RelativeLayout3"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back2"
    android:gravity="left" >
    <ImageButton
        android:id="@+id/backLocation3"
        android:layout_width="72dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/btn_zuruck2" />
    <ImageView
        android:id="@+id/imageViewMap"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/backLocation3"
        android:layout_marginTop="14dp"
        android:src="@drawable/businesslounge" />
    <RelativeLayout
        android:id="@+id/mapPlaceHolderLayout"
        android:layout_width="300dp"
        android:layout_height="200dip"
        android:layout_alignLeft="@+id/backLocation3"
        android:layout_below="@+id/imageViewMap"
        android:layout_marginTop="92dp" >
    </RelativeLayout>



    <TextView
        android:id="@+id/mapLocation"
        android:layout_width="240dp"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/mapPlaceHolderLayout"
        android:layout_below="@+id/imageViewMap"
        android:layout_marginTop="47dp"
        android:text="@string/maplocation"
        android:textSize="25dp"
        android:textColor="@color/purple" />

    <ImageButton
        android:id="@+id/phonereserve"
        android:layout_width="220dp"
        android:layout_height="36dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="24dp"
        android:src="@drawable/rezervephone" />
</RelativeLayout>

与地图视图相关的代码部分是:

public class StandorteFragment extends MapHostFragment {
public String text2;
private RelativeLayout mapPlaceHolderLayout;
public AQuery aQuery;
private MapView myMapView;
private GeoPoint geoPoint;
private MapController mc;
@Override
protected Class<? extends Activity> getActivityClass() {
    return LocationMapActivity.class;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.location, container, false);
    ViewFlipperStandorte = (ViewFlipper) v.findViewById(R.id.viewFlipperLocation);
    geoPoint = new GeoPoint( (int) (48.949997* 1E6), (int) (22.140213 * 1E6));
    mapPlaceHolderLayout = (RelativeLayout)v.findViewById(R.id.mapPlaceHolderLayout);
    mapPlaceHolderLayout.addView(onCreateMapView());
//      myMapView = (MapView) v.findViewById(R.id.mapPlaceHolderLayout);
//        mc = myMapView.getController();
//        mc.animateTo(geoPoint);
//  

它可以工作,但不会在地图视图中显示任何内容。如果我不用myMapView评论这3条线并设置geoPoint的动画,它会强制关闭。我该怎么办?

编辑:onCreateMapView:

public View onCreateMapView() {
    Intent intent = new Intent(getActivity(), getActivityClass());
    final Window w = getLocalActivityManager().startActivity(ACTIVITY_TAG,
            intent);
    final View wd = w != null ? w.getDecorView() : null;
    if (wd != null) {
        ViewParent parent = wd.getParent();
        if (parent != null) {
            ViewGroup v = (ViewGroup) parent;
            v.removeView(wd);
        }
        wd.setVisibility(View.VISIBLE);
        wd.setFocusableInTouchMode(true);
        if (wd instanceof ViewGroup) {
            ((ViewGroup) wd)
                    .setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
        }
    }
    return wd;
}   

好吧,xml中的R.id.mapPLaceHolderLayout不是映射视图,所以不能将其强制转换为映射视图。该行将导致异常。

mapPlaceHolderLayout.addView(onCreateMapView());称为MapHostFragment,称为LocalActivityManagerFragment以某种方式转到扩展MapActivity的LocationMapActivity,所以在这里我可以实例化Mapcontroller,一切都以正常形式进行

最新更新