从当前位置到 poi android maps v2 的路线
Posted
技术标签:
【中文标题】从当前位置到 poi android maps v2 的路线【英文标题】:Directions from current location to poi android maps v2 【发布时间】:2015-05-13 13:30:33 【问题描述】:我在这里阅读了很多帖子,但我无法解决我的问题。
我构建了一个简单的应用程序,它显示了许多 poi、信息视图,并且我能够绘制一条折线并在地图中正确显示步行方向,设置两个 Lat Lng 点。
现在我正在尝试添加 START POINT 作为用户当前位置的功能。如果我使用 map.setMyLocationEnabled(true);它显示了我位置的蓝光点,我使用了“getMyLocation().getLatitude();”和“getMyLocation().getLongitude();”获取正确坐标的方法。但是当我运行我的应用程序时,它会因 NullPoint 错误而崩溃。
编辑:我解决了我的问题,我用解决方案编辑了 MainAcrivity 类
这是我的 MainActivity.java
package com.directions.android;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.directions.route.Route;
import com.directions.route.Routing;
import com.directions.route.RoutingListener;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;
public class MyActivity extends FragmentActivity implements RoutingListener
protected GoogleMap map;
protected LatLng start;
protected LatLng end;
protected Double myPosLat;
protected double myPosLng;
/**
* This activity loads a map and then displays the route and pushpins on it.
*/
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
map = fm.getMap();
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(47.3369217,9.353883));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);
map.moveCamera(center);
map.animateCamera(zoom);
map.setMyLocationEnabled(true);
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener()
@Override
public void onMyLocationChange(Location location)
map.addMarker(new MarkerOptions().position(new LatLng(
location.getLatitude(), location.getLongitude())).title("You are here!"));
start = new LatLng(location.getLatitude(), location.getLongitude());
end = new LatLng(44.48861858, 11.36779726);
Routing routing = new Routing(Routing.TravelMode.WALKING);
routing.registerListener(MyActivity.this);
routing.execute(start, end);
);
@Override
public void onRoutingFailure()
// The Routing request failed
@Override
public void onRoutingStart()
// The Routing Request starts
@Override
public void onRoutingSuccess(PolylineOptions mPolyOptions, Route route)
PolylineOptions polyOptions = new PolylineOptions();
polyOptions.color(Color.RED);
polyOptions.width(8);
polyOptions.addAll(mPolyOptions.getPoints());
map.addPolyline(polyOptions);
// Start marker
MarkerOptions options = new MarkerOptions();
options.position(start);
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.start_blue));
map.addMarker(options);
// End marker
options = new MarkerOptions();
options.position(end);
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.end_green));
map.addMarker(options);
【问题讨论】:
请发布您的 LogCat 日志。 没有 logcat 我们无法预测您的问题:( 【参考方案1】:我建议您将与map.getMyLocation()
相关的部分代码放在OnMyLocationChangeListener
中。在 Android 上获取MyLocation
需要时间。
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener()
@Override
public void onMyLocationChange(Location location)
myPosLat = location.getLatitude();
myPosLng = location.getLongitude();
start = new LatLng(myPosLat, myPosLng);
end = new LatLng(48.823515, 10.1246599);
Routing routing = new Routing(Routing.TravelMode.WALKING);
routing.registerListener(this);
routing.execute(start, end);
);
【讨论】:
【参考方案2】:我知道我在问什么。这是添加从当前位置到固定纬度经度的路线的代码的 sn-p。
map.setMyLocationEnabled(true);
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener()
@Override
public void onMyLocationChange(Location location)
map.addMarker(new MarkerOptions().position(new LatLng(
location.getLatitude(), location.getLongitude())).title("You are here!"));
start = new LatLng(location.getLatitude(), location.getLongitude());
end = new LatLng(44.48861858, 11.36779726);
Routing routing = new Routing(Routing.TravelMode.WALKING);
routing.registerListener(MyActivity.this);
routing.execute(start, end);
);
【讨论】:
以上是关于从当前位置到 poi android maps v2 的路线的主要内容,如果未能解决你的问题,请参考以下文章
Android- Google Maps V2:跟踪从当前位置到另一个目的地的路线
在 Android google maps api v2 for 4.0 中,显示从当前位置到给定纬度的路线
如何从 Google Maps android 中的当前位置不断检测附近的标记位置?
打开android原生谷歌地图应用程序获取从当前位置开始的方向
如何使用 android 手机上的本地 Google Maps .html 文件平移到当前位置?
如何通过google map api最新版本(google play service 8.3)绘制从当前位置到目的地的行车路线