- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个应用程序,其中一个 Activity 显示 map ,另一个类用于在 map 上放置标记或任何叠加项。它工作得很好,但现在当用户触摸 map 时,它会显示一 strip 有新位置的消息(此代码在 AddItemizedOverlay 的 ontouche 事件上实现)。
我想改为更改 map 上新位置的图钉(主要 Activity 中的代码)。如何将新位置数据从 AddItemizedOverlay 类传递到主要 Activity ?如何绘制新用户位置?谢谢!!!
myMapactivity.java
public class myMapactivity extends MapActivity
{
private MapView mapView;
private MapController mapCtrl;
List<Overlay> mapOverlays;
GeoPoint mePoint;
AddItemizedOverlay itemizedOverlay;
OverlayItem overlayitem;
public void onCreate(Bundle savedInstanceState)
{
...
mapView = (MapView) findViewById(R.id.mapview);
mapView.setSatellite(false);
mapView.setBuiltInZoomControls(true);
mapOverlays = mapView.getOverlays();
mapOverlays.clear();
mapCtrl = mapView.getController();
drawCurrentUserLocation();
}
private void drawCurrentUserLocation()
{
// Drawable marker icon
Drawable drawable_user = this.getResources()
.getDrawable(R.drawable.mark_red);
itemizedOverlay = new AddItemizedOverlay(drawable_user, this);
overlayitem = new OverlayItem(mePoint, "Your Location","That is you!");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
itemizedOverlay.populateNow();
mapCtrl.animateTo(mePoint);
mapCtrl.setZoom(17);
}
}
AddItemizedOverlay.java
public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
private Context context;
public AddItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public AddItemizedOverlay(Drawable defaultMarker, Context context) {
this(defaultMarker);
this.context = context;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
if (event.getAction() == 1) {
GeoPoint geopoint = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
// latitude
double lat = geopoint.getLatitudeE6() / 1E6;
// longitude
double lon = geopoint.getLongitudeE6() / 1E6;
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = null;
try {
List<Address> list = geocoder.getFromLocation(lat, lon, 1);
if (list != null && list.size() > 0) {
Address address = list.get(0);
// sending back first address line and locality
result = address.getAddressLine(0) + ", " + address.getLocality();
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
Log.e("Error", "Impossible to connect to Geocoder", e);
}
}
return false;
}
最佳答案
由于 myMapactivity 是 AddItemizedOverlay 的上下文,您可以使用:
((myMapactivity)context).setMarker(event)
在 AddItemizedOverlay 中;这将调用应在 myMapactivity 中实现的公共(public)方法 setMarker(MotionEvent event)。
关于Android MapActivity 和 ItemizedOverlay 在 TouchEvent 上改变当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877259/
如您所知,覆盖项目只有标题、消息和可绘制图像。 我想创建一个自定义项目,例如还具有以下字段:ID、街道、城市、国家/地区。 调用 OnTap 后,我想在 ListView 中显示该信息,因此在您点击该
我遵循了 Google Dev 上的教程创建一个 ItemSizedOverlay。我的想法是从名为 list 的 ArrayList 中获取多个位置。所以我使用 for() 来读出 ArrayLis
我正在尝试创建一个 Android MapView . 在本文的第 2 部分中,当实现 ItemizedOverlay 时,Eclipse 无法从构建路径中获取它。 我不确定缺少 SDK 的哪一部分。
我想制作一个带有可更换图钉的 Google map 叠加层。一种简单的可视化方法是考虑近乎实时的覆盖,其中引脚不断改变位置。 但是,我似乎想不出一个安全的方法来使用 ItemizedOverlay .
我已经尝试了几个小时来弄清楚为什么在将逐项 map 覆盖添加到 map 的覆盖之前,我不能不这样做就不能使用它: GeoPoint 点; OverlayItem overlayitem = new O
使用 GeoPoints 的 ArrayList,我希望在 map 上绘制点并用线连接它们。我的“点”部分可以工作,但线条不行。我的 ItemizedOverlay 类: private class
我有一个类: public class WaypointOverlay extends ItemizedOverlay 它覆盖了 ItemizedOverlay 的 draw() 方法。 在我的 Ac
我想知道从网络加载 ItemizedOverlay 标记的正确方法是什么,以某种方式使用缓存。 现在我正在下载所有图像并将它们转换为可绘制对象,效果很好,但我想看看是否有更好的方法。 public c
我必须在特定点的 map 上放置一些叠加层,我从 API 获取点坐标。我在异步任务中进行抓取。我成功地放置了叠加层,当我放大 map 或跨越它时,响应非常慢。这是我的 overlayitem 类和我的
我正在探索 RoboGuice 的世界,并且更改了一个 map Activity ,现在可以使用它了。它是一个 RoboMapActivity,我已经将应用程序的扩展名更改为从 RoboActivit
我有一个 MapView,上面有很多叠加标记。它有点工作,但在添加标记时往往会出现 ANR,因为它们很多。所以我将代码移到了 AsyncTask 中。一旦移动,代码就会中断,渲染完成后会从框架中冒出以
这根本没有引用我代码中的任何地方。我该如何深入了解它? java.lang.NullPointerException at com.google.android.maps.OverlayBundle.
我正在使用 ItemizedIconOverlay 类,我目前在 map 上显示事件以及具有相同默认图标的用户位置。 如何更改每个叠加层的图标集? 是否有类似于 google.maps 示例的内容:
我有以下扩展的 ItemizedOverlay 类。该类在 Google map (MapView)上绘制许多图标。我需要创建一个监听器来单击 ItemizedOverlay 的任何项目,但我不知道如
我有一个扩展 ItemizedOverlay 的类。 其中,我有: @Override protected boolean onTap(int index) { OverlayItem item
我正在为 android 制作一个 map 应用程序,它允许用户放置自己的兴趣点。我想为放置的每种类型的点设置自定义图钉图标。当我尝试在运行时获取我的自定义 ItemizedOverlay 时,我收到
我的应用程序中有 2 个 ItemizedOverlay 实例,一个用于 CurrentLocation,另一个用于其他。我已将这 2 个叠加层添加到 MapView。 我想在 map 的刷新按钮倾斜
我在 MapView 上添加了一些 ItemizedOverlay。我能够展示最初初始化的静态标记。现在说在 5 个标记之后,我需要精确地更新第一个或第二个标记,我该怎么做?我想刷新或更新之前已经可见
我创建了一个具有 2 个不同叠加层的 MapView。一个叠加层显示 map 上的 POI,第二个叠加层在您单击/选中其中一个 POI 时显示一个“气泡”。 现在我想在第二个叠加层可见且没有点击 PO
我正在尝试以编程方式绘制一个 parking 图标,以作为 map 上逐项叠加层的可绘制对象放置。 该图标由一个蓝色正方形组成,其中心有一个白色“P”,我想以编程方式更改正方形的颜色以表示不同的 pa
我是一名优秀的程序员,十分优秀!