python根据经纬在google 绘制轨迹_根据经纬度在谷歌地图上绘制路径

i want to draw path on google map.

Basically what i am tracking user locaion after specfic time interval. when user reach to some destination then i need to draw the path which he followed to reach that destination.

It is working fine but the problem is it is showing zigzag path. See the image below.

What i want:

I want to draw a proper path followed by the points that i get during tracking.

What i have tried

i searched and found this link in which we can pass up to 8 points to get the directions. Which is the maximum limit allowed to the non-business users of the Google Map. Is there any other way to achieve this. because i have so many points to draw on map.

code for drawing polylines

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();

}

}

thanks for help.

解决方案

I'm agree with antonio's answer. Problem is not with you drawing function. You just drawing path whatever device giving you location. Problem is your device is not giving accurate location.

Let me giving you brief description about Location Functionality.

There are three kind of provider giving location in device.

1 GPS Provider.

This provider determines location using satellites. Depending on conditions, this provider may take a while to return a location fix. Requires the permission ACCESS_FINE_LOCATION.

The extras Bundle for the GPS location provider can contain the following key/value pairs:

satellites - the number of satellites used to derive the fix

2 Network Provider.

This provider determines location based on availability of cell tower and WiFi access points. Results are retrieved by means of a network lookup.

3 Passive Provider.

This provider can be used to passively receive location updates when other applications or services request them without actually requesting the locations yourself. This provider will return locations generated by other providers. You can query the getProvider() method to determine the origin of the location update. Requires the permission ACCESS_FINE_LOCATION, although if the GPS is not enabled this provider might only return coarse fixes.

Reference:

As per my experience I can say GPS Provider is giving you accurate

location compare to Network Provider but need open environment, GPS

provider is not giving accurate location in inside building.

getAccuracy().

Returns a constant describing horizontal accuracy of this provider. If the provider returns finer grain or exact location, ACCURACY_FINE is returned, otherwise if the location is only approximate then ACCURACY_COARSE is returned.

This method will return exact value when location is changed from GPS Provider otherwise it will return approximate or 0 value.

Solution:

Recommended Use Google Client

Sample Example.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值