gpt4 book ai didi

android - 在 Android 中使用谷歌地图在触摸位置添加标记

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:00 26 4
gpt4 key购买 nike

如何在 map 中的特定位置添加标记?

我看到这段代码显示了触摸位置的坐标。我希望标记每次被触摸时弹出或显示在同一位置。我该怎么做?

public boolean onTouchEvent(MotionEvent event, MapView mapView) {   
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();

mapView.invalidate();
}
return false;
}

最佳答案

如果要在触摸的位置添加标记,则应执行以下操作:

public boolean onTouchEvent(MotionEvent event, MapView mapView) {              
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
mapView.getOverlays().add(new MarkerOverlay(p));
mapView.invalidate();
}
return false;
}

检查我是否在消息出现后调用了 MarkerOverlay。为了使其有效,您必须创建另一个叠加层 MapOverlay:

class MarkerOverlay extends Overlay{
private GeoPoint p;
public MarkerOverlay(GeoPoint p){
this.p = p;
}

@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when){
super.draw(canvas, mapView, shadow);

//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);

//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(getResources(), /*marker image*/);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}

我希望你觉得这很有用!

关于android - 在 Android 中使用谷歌地图在触摸位置添加标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171429/

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