gpt4 book ai didi

android - 如何在android中的 map 上画线

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

在我的应用程序中,我需要在行走、运行或驾驶时在 map 上画线。对于获取位置,我使用 LocattionListener 类的 OnLocationChanged 方法。在 OnLocationChanged 方法中,我调用了画线类。该类(class)被称为它打印在日志中,但我的 map 上没有任何线条。请帮我。如果您有这方面的经验或想法,请与我分享。

代码:

    public void onCreate(Bundle savedInstanceState) 
{
.......
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,new myLocationListener());
}
......
class myLocationListener implements LocationListener {
public void onLocationChanged(Location loc) {
Log.e("status","begin");
Toast.makeText(getBaseContext(),"onStatusChanged - called",Toast.LENGTH_SHORT).show();
Log.e("MAP","onStatusChanged - called");
LocationManager myManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if(myManager != null){
String param = (String)myManager.getProviders(true).get(0);
Location loc1 = myManager.getLastKnownLocation(param);
if(loc1 != null){
latPointDst = loc1.getLatitude();
lngPointDst = loc1.getLongitude();
tolat=latPointDst;
tolng=latPointDst;
GeoPoint tmp2= new GeoPoint((int) ( tolat * 1E6), (int) ( tolng * 1E6));
drawingmethod(tmp2);
}
else
Log.e("Err-2","Error: Location is null");
}
else
Log.e("Err-2","Error: Location Manager is null");
Log.e("status","end");
}
}
}

public void drawingmethod(GeoPoint g2) {
geo.add(g2);
mc = mapView.getController();
mapOverlays = mapView.getOverlays();
projection = mapView.getProjection();
Iterator<GeoPoint> itr = geo.listIterator();
while(itr.hasNext()){
if(itr.hasNext()){
p=itr.next();
}
if(itr.hasNext()){
p1=itr.next();
}
mapOverlays.add(new MyOverlay(p.getLatitudeE6(),p.getLongitudeE6(),p1.getLatitudeE6(),p1.getLongitudeE6()));
}
}

//画线类

public class MyOverlay extends Overlay {
private GeoPoint gp1;
private GeoPoint gp2;

public MyOverlay(int fromlatE6,int fromlonE6,int tolatE6,int tologE6) {

int flat=0,flog=0,tlat=0,tlog=0;
flat=fromlatE6;
flog=fromlonE6;
tlat=tolatE6;
tlog=tologE6;
gp1 = new GeoPoint(flat,flog);
gp2 = new GeoPoint(tlat,tlog);
}

@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,long when) {
Projection projection = mapView.getProjection();
if (shadow == false) {
Paint paint = new Paint();
paint.setAntiAlias(true);
Point point = new Point();
projection.toPixels(gp1, point);
paint.setColor(Color.RED);
Point point2 = new Point();
projection.toPixels(gp2, point2);
paint.setStrokeWidth(3);
Log.e("location change","drawing");
canvas.drawLine((float) point.x, (float) point.y, (float) point2.x,(float) point2.y, paint);
Log.e("map","draw2");
}
return super.draw(canvas, mapView, shadow, when);
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// TODO Auto-generated method stub
super.draw(canvas, mapView, shadow);
Log.e("map","draw1");
}
}

最佳答案

您应该通过调用 google api 获取源和目的地之间的坐标列表。

然后就可以画线了。 Refer this

关于android - 如何在android中的 map 上画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183649/

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