PHP地图规划骑行路径,高德路径规划,自定义骑行路线(适用3D地图)
1,規劃路徑
LatLonPoint latLonPoint1 = new LatLonPoint(xxx,xxx);
LatLonPoint latLonPoint2 = new LatLonPoint(xxx,xxx);
RouteSearch mRouteSearch = new RouteSearch(this);
mRouteSearch.setRouteSearchListener(this);
final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(
latLonPoint1, latLonPoint2);
RouteSearch.RideRouteQuery query = new RouteSearch.RideRouteQuery(fromAndTo, RouteSearch.RidingDefault);
mRouteSearch.calculateRideRouteAsyn(query);// 異步路徑規劃騎行模式查詢
2,監聽并得到路徑規劃結果
@Override
public void onBusRouteSearched(BusRouteResult driveRouteResult, int i) {
}
@Override
public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i) {
}
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
}
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
RidePath drivePath = rideRouteResult.getPaths().get(0);
RideRouteOverlay drivingRouteOverlay = new RideRouteOverlay(this, aMap, drivePath, rideRouteResult.getStartPos(), rideRouteResult.getTargetPos());//自定義路徑樣式
drivingRouteOverlay.setNodeIconVisibility(false);//隱藏轉彎的節點
drivingRouteOverlay.addToMap();
drivingRouteOverlay.zoomToSpan();
}
3,自定義路徑樣式
import android.content.Context;
import com.amap.api.maps.AMap;
import com.amap.api.maps.model.BitmapDescriptor;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.PolylineOptions;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.route.RidePath;
import com.amap.api.services.route.RideStep;
import com.dz.gghelp.R;
import java.util.ArrayList;
import java.util.List;
/**
* 騎行路線圖層類。在高德地圖API里,如果要顯示步行路線規劃,可以用此類來創建騎行路線圖層。如不滿足需求,也可以自己創建自定義的騎行路線圖層。
*
* @since V3.5.0
*/
public class RideRouteOverlay extends RouteOverlay {
private PolylineOptions mPolylineOptions;
private BitmapDescriptor walkStationDescriptor = null;
private RidePath ridePath;
/**
* 通過此構造函數創建騎行路線圖層。
*
* @param context 當前activity。
* @param amap 地圖對象。
* @param path 騎行路線規劃的一個方案。詳見搜索服務模塊的路徑查詢包(com.amap.api.services.route)中的類 WalkStep。
* @param start 起點。詳見搜索服務模塊的核心基礎包(com.amap.api.services.core)中的類LatLonPoint。
* @param end 終點。詳見搜索服務模塊的核心基礎包(com.amap.api.services.core)中的類LatLonPoint。
* @since V3.5.0
*/
public RideRouteOverlay(Context context, AMap amap, RidePath path,
LatLonPoint start, LatLonPoint end) {
super(context);
this.mAMap = amap;
this.ridePath = path;
startPoint = convertToLatLng(start);
endPoint = convertToLatLng(end);
}
public static LatLng convertToLatLng(LatLonPoint latLonPoint) {
return new LatLng(latLonPoint.getLatitude(), latLonPoint.getLongitude());
}
/**
* 添加騎行路線到地圖中。
*
* @since V3.5.0
*/
public void addToMap() {
initPolylineOptions();
try {
List ridePaths = ridePath.getSteps();
mPolylineOptions.add(startPoint);
for (int i = 0; i < ridePaths.size(); i++) {
RideStep rideStep = ridePaths.get(i);
LatLng latLng = convertToLatLng(rideStep
.getPolyline().get(0));
addRideStationMarkers(rideStep, latLng);
addRidePolyLines(rideStep);
}
mPolylineOptions.add(endPoint);
addStartAndEndMarker();
showPolyline();
} catch (Throwable e) {
e.printStackTrace();
}
}
/**
* @param rideStep
*/
private void addRidePolyLines(RideStep rideStep) {
mPolylineOptions.addAll(convertArrList(rideStep.getPolyline()));
}
public static ArrayList convertArrList(List shapes) {
ArrayList lineShapes = new ArrayList();
for (LatLonPoint point : shapes) {
LatLng latLngTemp = convertToLatLng(point);
lineShapes.add(latLngTemp);
}
return lineShapes;
}
/**
* @param rideStep
* @param position
*/
private void addRideStationMarkers(RideStep rideStep, LatLng position) {
addStationMarker(new MarkerOptions()
.position(position)
.title("\u65B9\u5411:" + rideStep.getAction()
+ "\n\u9053\u8DEF:" + rideStep.getRoad())
.snippet(rideStep.getInstruction()).visible(nodeIconVisible)
.anchor(0.5f, 0.5f).icon(walkStationDescriptor));
}
/**
* 初始化線段屬性
*/
private void initPolylineOptions() {
if (walkStationDescriptor == null) {
walkStationDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.amap_ride);
}
mPolylineOptions = null;
mPolylineOptions = new PolylineOptions();
mPolylineOptions.color(getDriveColor()).width(getRouteWidth());
}
private void showPolyline() {
addPolyLine(mPolylineOptions);
}
}
總結
以上是生活随笔為你收集整理的PHP地图规划骑行路径,高德路径规划,自定义骑行路线(适用3D地图)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 紧扣硬科技 沣西新城开启“科学城”建设新
- 下一篇: 抖音跳转到微信引流的方法,抖音跳转微信的