gpt4 book ai didi

java - 在标记周围 50 米半径内时,触发方法

转载 作者:行者123 更新时间:2023-12-01 15:29:20 25 4
gpt4 key购买 nike

我需要做的是,当“用户”标记进入(假设半径为 50 米)感兴趣地点标记之一的半径时,会弹出一个对话框( showplaceDialog() )。

我该怎么做?我根本不知道该怎么做......

这就是我放置“用户”标记的方式,该标记会随着位置的变化而移动。

@Override
public void onLocationChanged(Location location) {
Log.d("Location", "onLocationChanged with location " + location.toString());

if(overlayMarkerYou == null) {
overlayMarkerYou = new MyOverlay(getResources().getDrawable(R.drawable.marker_you),mapView);
mapView.getOverlays().add(overlayMarkerYou);
}else{
mapView.getOverlays().remove(overlayMarkerYou);
mapView.invalidate();
overlayMarkerYou = new MyOverlay(getResources().getDrawable(R.drawable.marker_you),mapView);
mapView.getOverlays().add(overlayMarkerYou);
}

if (location != null) {

mapView.invalidate();
GeoPoint gpt = new GeoPoint(microdegrees(location.getLatitude()),microdegrees(location.getLongitude()));
mapController.setCenter(gpt);
overlayMarkerYou.addPoint(gpt, getString(R.string.markerYou), getString(R.string.markerYouDescription));

}

}

这就是我为感兴趣的地方放置多个标记的方法

public void putPlacesOfInterest(){
this.dh = new DataHelper(ShowMap.this);
List<Pontos> list = this.dh.selectAll();
for(Pontos p : list){
markerPlaces.add(new OverlayItem(p.getName().toString(), Long.toString(p.getId()), new GeoPoint(p.getLat(), p.getLng())));
}
mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(markerPlaces, new OnItemGestureListener<OverlayItem>() {

@Override
public boolean onItemLongPress(int index, OverlayItem item) {
Toast.makeText(ShowMap.this, "" + item.mTitle, Toast.LENGTH_SHORT).show();
return true;
}

@Override
public boolean onItemSingleTapUp(int index, OverlayItem item) {
showplaceDialog(Integer.parseInt(item.mDescription),item.mTitle);
return true;
}

}, mResourceProxy);

mapView.getOverlays().add(mMyLocationOverlay);
mapView.invalidate();
}

最佳答案

我建议查看 addProximityAlert() LocationManager 类中提供的函数。我不确定您可以注册多少听众。

您的另一个选择是检查每个位置更新。当您的应用收到 onLocationChanged() 回调时,您可以循环访问您感兴趣的地点,并检查它们是否位于当前位置 50 米范围内。为了使此操作变得更加简单,您可以使用 Location 类中的 distanceTo() 方法。

关于java - 在标记周围 50 米半径内时,触发方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com