Android MapView坐标x屏幕位置

时间:2011-08-25 18:16:54

标签: android

我正在开发一个需要处理mapview的android应用程序。我基本上需要做的是在屏幕中央放置一个PIN,它将使用相对布局覆盖在mapview上。用户可以根据自己的意愿移动地图。移动地图并定位PIN后,我需要从该位置获得协调(lat和lng)。

它基本上类似于用户可以请求出租车的应用程序。 UberCab

第三段说:“例如,正如公司博客文章中所解释的,当您订购汽车时,您可以通过移动”静止图钉下的地图并[使用]整个地图来设置拾取位置准确设置您的位置.Android应用上的信息面板具有干净的透明度,可让您专注于地图以及您前往的位置。“

我的布局将是这样的:

    <RelativeLayout android:id="@+id/mapviewContainer" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_below="@+id/tvCurrentAddress">   

    <ImageView android:id="@+id/pin_image_view" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/pin_red" 
        android:layout_centerInParent="true" />  

    <com.google.android.maps.MapView android:id="@+id/mapview" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:clickable="true"            
        android:apiKey="@string/mapKey" />          

</RelativeLayout>

我想实现同样的目标。有谁知道如何实现这个目标?

感谢您的关注

Ť

1 个答案:

答案 0 :(得分:1)

你不会使用RelativeLayout。使用Overlay或更常见的ItemizedOverlay绘制链接到地理坐标的MapView上的引脚和基本上任何东西。

虽然回答你的主要问题。您可以通过类似于以下的系统将坐标转换为像素坐标:

GeoPoint location;
-- get the location someway like through the onTap method -- 
Point screenPoint = new Point();
mapView.getProjection().toPixels(location, screenPoint);

现在screenPoint将拥有GeoPoint的像素坐标。