屏幕顶部的中心地图。谷歌地图api android

屏幕顶部的中心地图。谷歌地图api android,android,maps,Android,Maps,(我使用的是类似于umano应用程序中的滑动布局) 如何将地图居中放置在屏幕顶部。 我想将地图和标记放在屏幕顶部的中心位置。 现在看起来是这样的: 我希望它看起来像这样: 你知道我怎样才能做到这一点吗?谢谢=)您能提供您的XML布局吗?我猜您的地图与父视图匹配,视图的其余部分在地图顶部重叠。解决此问题的一个简单方法是,可以将地图视图和其他视图排列为垂直线性布局。如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayou

(我使用的是类似于umano应用程序中的滑动布局) 如何将地图居中放置在屏幕顶部。 我想将地图和标记放在屏幕顶部的中心位置。 现在看起来是这样的:

我希望它看起来像这样:


你知道我怎样才能做到这一点吗?谢谢=)

您能提供您的XML布局吗?我猜您的地图与父视图匹配,视图的其余部分在地图顶部重叠。解决此问题的一个简单方法是,可以将地图视图和其他视图排列为垂直线性布局。如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <CustomMapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:id="@+id/mapView" />

    <otherView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    </otherView>

</LinearLayout>

我找到了一种不改变地图高度的迂回方法

  • 使用calc的第二个答案,您的米/像素系数:

    double metersPerPx=156543.03392*Math.cos(纬度*Math.PI/180)/Math.pow(2,缩放)

    纬度是您的当前点纬度,如果您只想以当前点中心为中心,则:

    double latitude=googleMap.getCameraPosition().target.latitude

    缩放是您当前的地图缩放:

    double zoom=googleMap.getCameraPosition().zoom

  • 获取屏幕高度:

    private int getScreenHeight(){
    DisplayMetrics DisplayMetrics=新的DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    返回displayMetrics.heightPixels;
    }

  • 计算屏幕顶部的中心在哪里,需要移动到顶部的像素数。您需要知道底部覆盖层的高度:

    int像素=bottomOverlayHeight/2

    或者如果你知道这是60%:

    int像素=0.6/2*屏幕高度

  • 要移动的计算仪表:
    double meters=metersPerPx*像素

  • 将米转换为纬度值。子午线大约有20000公里长。将180度除以20000公里,结果为0.009度/公里=0.000009度/米。 最后:

    double mLatitude=纬度-米*0.000009

    那么就:

    CameraPosition CameraPosition=new CameraPosition.Builder().target(new LatLng(mLatitude,longitude)).zoom(zoom.build();
    googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))


  • 老实说:这在理论上是正确的,但是对我不起作用。但是如果我把0.000009除以10=0.0000009,它就像一个符咒。我猜第1点可能是另一个单位——每像素10米。

    但这会阻止地图在滑动布局折叠时填满整个屏幕,不是吗?我想的更多的是一个程序化的解决方案。不管怎样,我会试试你的解决方案,看看是否有效。感谢yaNotice,我正在使用
    android:layout\u weight
    测量每个视图的高度。因此,当您想用mapview填充整个屏幕时,只需在您的
    otherView
    上设置可见性(View.GONE)
    即可。很抱歉,这不起作用。它真正的颠簸和触摸停止正常工作shawn_WX您能提供您的xml吗?