【问题标题】:(Android) How to set default gps position in mapview(Android) 如何在地图视图中设置默认 GPS 位置
【发布时间】:2012-07-24 13:07:05
【问题描述】:

所以我有一个应用程序,它必须显示许多商店的位置,这取决于你选择哪一个。 带有 mapView 的页面的 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>

与mapview相关的部分代码是:

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);
//  

它可以工作,但在 mapView 中不显示任何内容。如果我不使用 myMapView 和动画 geoPoint 评论这 3 行,它会强制关闭。 我需要做什么?

编辑: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;
}   

【问题讨论】:

  • 您是否设置了 Google Map API 密钥?
  • 是的,地图现在可以工作,但不知道如何设置中心位置
  • 这里有一些不错的地图教程:mirnauman.wordpress.com/2012/01/30/… 其中包括设置中心点
  • 我设法让它运行,并设置了 gps 位置,所以谢谢,它有点帮助,但我知道我的程序出现“无法获取连接工厂客户端”错误,我不知道为什么,因为它工作得很好,直到我不小心删除了我的调试密钥。我制作了另一个 API 密钥,并尝试了调试版本和生产签名版本,但仍然没有成功。

标签: android controller geolocation gps android-mapview


【解决方案1】:

好吧,您的 xml 中的 R.id.mapPLaceHolderLayout 不是地图视图,因此您不能将其转换为一个。该行将导致异常。

【讨论】:

  • 好的,但是我如何使用地图视图?因为我知道 mapPlaceHolderLayout 是一个布局,它会加载地图。
  • CreateMapView 上的代码是做什么的?请发布该代码。
  • 好的,显然我错过了这一点,但我看不到您实际上在哪里将 MapView 添加到布局中。它不在 XML 中,我在任何地方的代码中都看不到它。您需要为 MapView 充气并将其添加到布局中。
  • 你能解释一下怎么做吗?有点像 android 的菜鸟,这几周我学到了很多东西,但还有很多东西要讲。我在框架中看到的只是那些在地图未加载到 googlemaps 时看到的方块。
  • 我让它显示地图,但仍然不知道如何设置地图开始的默认地理位置
【解决方案2】:

mapPlaceHolderLayout.addView(onCreateMapView());称为 MapHostFragment,它调用 LocalActivityManagerFragment,它以某种方式转到扩展 MapActivity 的 LocationMapActivity,所以在这里我可以实例化 Mapcontroller,并且那里一切正常

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    相关资源
    最近更新 更多