如何收听Android中的自定义标记位置变化?
Posted
技术标签:
【中文标题】如何收听Android中的自定义标记位置变化?【英文标题】:How to listen to custom marker location change in Android? 【发布时间】:2015-11-28 15:34:12 【问题描述】:我有一个将纬度和经度转换为地址的 Geocoder IntentService。我在屏幕的正中间还有一个自定义标记图像。我想让用户通过简单地拖动地图并将其放在我的自定义标记下方来选择他们想要的任何位置。一旦他们这样做,我想获得屏幕中心的纬度和经度,并将这些参数传递给 Geocoder 类。我尝试了以下但我只得到当前位置。标记卡在中间,这意味着如果我拖动地图,它会弹回我当前的位置。我正在使用谷歌地图 api V2。
protected void startGeocoderService(final Location lo)
map.setOnCameraChangeListener(new OnCameraChangeListener()
@Override
public void onCameraChange(CameraPosition cameraPosition)
try
LatLng lalng = new LatLng(lo.getLatitude(), lo.getLongitude());
map.moveCamera(CameraUpdateFactory.newLatLngZoom(lalng, 15));
LatLng newloatlng = map.getCameraPosition().target;
lo.setLatitude(newloatlng.latitude);
lo.setLongitude(newloatlng.longitude);
Intent myintent = new Intent(MapActivity.this, FetchAddressIntentService.class);
myintent.putExtra(Constants.RECEIVER, mAddressResultReceiver);
myintent.putExtra(Constants.LOCATION_DATA_EXTRA, lo);
startService(myintent);
catch (NullPointerException nullexception)
nullexception.printStackTrace();
);
我怎样才能做到这一点?提前感谢大家的帮助
【问题讨论】:
我认为您可以使用FrameLayout
为您的地图和标记设置overlap effect
,然后调用onCameraChange
和Geocoder
函数。更多详情请参考here
【参考方案1】:
我认为您可以使用FrameLayout
将overlap effect
用于您的地图和标记,然后调用onCameraChange
以及Geocoder
函数。
示例代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="$relativePackage.$activityClass" >
<FrameLayout
android:layout_
android:layout_ >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_
android:layout_ />
<LinearLayout
android:id="@+id/locationMarker"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/locationMarkertext"
android:layout_
android:layout_
android:background="@drawable/rounded_corner_map"
android:gravity="center"
android:minWidth="180dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text=" Set your Location "
android:textColor="@android:color/white" />
<ImageView
android:id="@+id/imageView1"
android:layout_
android:layout_
android:src="@drawable/add_marker" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_margin="8dp"
android:background="@android:color/white"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_
android:layout_marginLeft="10dp"
android:text="Selected Location"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#28b54c" />
<TextView
android:id="@+id/adressText"
android:layout_
android:layout_
android:layout_marginLeft="10dp"
android:ellipsize="end"
android:singleLine="true"
android:text="Getting location"
android:textSize="16sp" />
</LinearLayout>
</FrameLayout>
</RelativeLayout>
更多详情请参考here。
【讨论】:
以上是关于如何收听Android中的自定义标记位置变化?的主要内容,如果未能解决你的问题,请参考以下文章