使用 GPS Provider 在地图上使用设备的当前位置绘制路线

Posted

技术标签:

【中文标题】使用 GPS Provider 在地图上使用设备的当前位置绘制路线【英文标题】:Draw a route using current location from device on map using GPS Provider 【发布时间】:2012-09-03 18:00:21 【问题描述】:

我正在开发一个项目,以根据 GPS 提供者的当前位置在 MapView 中显示路线。我能够绘制两点之间的路径,但是当位置更改为新点导致绘制路径被擦除时,问题就开始了。

基本上我的位置侦听器保存当前的GeoPoint 并设置新的GeoPoint 位置,然后它开始覆盖以根据这两个点绘制路径。我认为一个选项可以将坐标保存到数据库然后从那里提取信息以绘制路径。

到目前为止,这是我的代码:

private class MyLocationListener implements LocationListener 

   public void onLocationChanged(Location location)    

     Toast.makeText(getBaseContext(), "Tracking device..",
                            Toast.LENGTH_SHORT).show();

            gp2 = new GeoPoint(
                    gp1.getLatitudeE6(),
                    gp1.getLongitudeE6());

            gp1 = new GeoPoint(
                    (int) (location.getLatitude() * 1000000),
                    (int) (location.getLongitude() * 1000000));


    myOverlay = new MapOverlay();

    mapOverlays_route.add(myOverlay);
    myMapView.invalidate();




class MapOverlay extends  com.google.android.maps.Overlay

        public MapOverlay()


        


        public void draw(Canvas canvas, MapView mapv, boolean shadow)
         super.draw(canvas, mapv, shadow);

        //Configuring the paint brush

        Paint mPaint = new Paint();
         mPaint.setDither(true);
         mPaint.setColor(Color.RED);
         mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
         mPaint.setStrokeJoin(Paint.Join.ROUND);
         mPaint.setStrokeCap(Paint.Cap.ROUND);
         mPaint.setStrokeWidth(4);




         Point p1 = new Point();
         Point p2 = new Point();
         Path path1 = new Path();


         Path path2 = new Path();
         projection.toPixels(gp1, p1);
         projection.toPixels(gp2, p2);

         path1.moveTo(p2.x, p2.y);//current location
         path1.lineTo(p1.x,p1.y);//new location


         canvas.drawPath(path1, mPaint);//drawing the path

         

        

【问题讨论】:

【参考方案1】:

正如您所说,您需要将这些坐标存储在某个地方。这些可以存储在数据库中或更临时的本地列表中。 draw 方法还必须在您存储的所有坐标之间进行迭代。

【讨论】:

存储和从数据库中提取信息是最有效的方法吗? 对于临时路线,我会将其存储在列表中。如果您想为以后存储值或绘制多个路径,我会使用 sqlite 数据库。

以上是关于使用 GPS Provider 在地图上使用设备的当前位置绘制路线的主要内容,如果未能解决你的问题,请参考以下文章

android:如何使用模拟(假)坐标修复 gps?

如何同时使用 GPS 和 NETWORK_PROVIDER,并且结果几乎没有错误

Android 谷歌地图使用 GPS 定位而不是网络

在地图上绘制路线

安卓上的gps跟踪

如何通过 GPS_PROVIDER 获得更高的准确性