【发布时间】:2016-09-05 08:10:11
【问题描述】:
我想在谷歌地图上绘制路径。
基本上我在特定时间间隔后跟踪用户位置。当用户到达某个目的地时,我需要绘制他到达该目的地所遵循的路径。
它工作正常,但问题是它显示的是锯齿形路径。见下图。
我想要什么:
我想绘制一条正确的路径,然后是我在跟踪过程中得到的点。
我的尝试
我搜索并找到了this 链接,在该链接中我们最多可以传递 8 个点来获取方向。这是谷歌地图的非商业用户允许的最大限制。有没有其他方法可以实现这一点。因为我有很多点要在地图上画。
绘制折线的代码
private void drawPath() {
if (mMap != null)
mMap.clear();
int count = 0;
LatLng prev = null;
String[] mProjection = {LocTable.COLUMN_ID, LocTable.COLUMN_LONGITUDE, LocTable.COLUMN_LATITUDE};
String mSelectionClause = LocTable.COLUMN_ID + "> ?";
String[] mSelectionArgs = {"0"};
String mSortOrder = LocTable.COLUMN_ID;
Cursor mCursor = getContentResolver().query(
LocContentProvider.CONTENT_URI, // The content URI of the words table
mProjection, // The columns to return for each row
mSelectionClause, // Selection criteria
mSelectionArgs, // Selection criteria
mSortOrder);
if(mCursor != null && mCursor.getCount()!=0) {
Log.i("cursor", "Count: " + mCursor.getCount() + "|Column count: " + mCursor.getColumnCount());
if (mCursor.moveToFirst()) {
do {
if (mMap != null) {
float lon = mCursor.getFloat(1);
float lat = mCursor.getFloat(2);
LatLng current = new LatLng(lat, lon);
markerPoints.add(current);
if (count == 0){
prev = current;
}
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(current, 19);
mMap.animateCamera(cameraUpdate);
mMap.addPolyline((new PolylineOptions())
.add(prev, current).width(6).color(Color.BLUE)
.visible(true));
prev=current;
count++;
}
} while (mCursor.moveToNext());
}
mCursor.close();
}
}
【问题讨论】:
-
我认为您必须在步行或开车时绘制路径?
-
并发布您的尝试或代码
-
画一条折线。您可以将点列表(latlng)传递给折线,然后将其添加到您的地图developers.google.com/android/reference/com/google/android/gms/…
-
@Ravi 我需要绘制两种类型的路径......在代码中我只是在保存在本地数据库中的谷歌上绘制折线
-
@PedroOliveira 我已添加代码,请检查。我在这里做错了什么。
标签: android google-maps