簡體   English   中英

如何在地圖上用箭頭折線連接多個標記以顯示行進方向?

[英]How to join multiple markers on the map with arrow headed poly-line to show directions of travelling?

我是android的新手,目前正在使用Google-map API。 我可以在地圖上繪制多個標記,但想用折線連接多個標記。我將用於關注方向,但僅適用於兩個點。 以下是該活動的代碼:

 public class MainActivity extends AppCompatActivity {

// Google Map
private GoogleMap googleMap;
// latitude and longitude
double latitude;
double longitude;
String newtime;
ArrayList<LatLng> points;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    points = new ArrayList<LatLng>();
    points.add(new LatLng(21.114369, 79.049423));
    points.add(new LatLng(21.113913, 79.049203));
    points.add(new LatLng(21.113478, 79.048736));
    points.add(new LatLng(21.113002, 79.048592));
    points.add(new LatLng(21.112857, 79.047315));
    points.add(new LatLng(21.112997, 79.046741));
    try {
        // Loading map
        initilizeMap();

    } catch (Exception e) {
        e.printStackTrace();
    }

    googleMap.getUiSettings().setZoomControlsEnabled(true);
    googleMap.setMyLocationEnabled(true);

    SimpleDateFormat sdfDateTime = new SimpleDateFormat("dd-MM-yy HH:mm:ss", Locale.US);
    newtime = sdfDateTime.format(new Date(System.currentTimeMillis()));

    // googleMap.addMarker(marker);
    drawMarker(points);

}

private void initilizeMap() {
    if (googleMap == null) {
        googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT).show();
        }
    }
}

private void drawMarker(ArrayList<LatLng> l) {
    // Creating an instance of MarkerOptions

    for (int i = 0; i < l.size(); i++) {
        latitude = l.get(i).latitude;
        longitude = l.get(i).longitude;
        MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Bus")
                .snippet(newtime);
        marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE));

        // Adding marker on the Google Map
        googleMap.addMarker(marker);
    }

    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(new LatLng(l.get(0).latitude, l.get(0).longitude)).zoom(18).build();

    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

}

@Override
protected void onResume() {
    super.onResume();
    initilizeMap();
}

}

請幫助/指導我完成任務。

謝謝

將您的drawMarker()修改為以下內容:

private void drawMarker(ArrayList<LatLng> l) {
    // Creating an instance of MarkerOptions

    PolylineOptions options = new PolylineOptions();
    options.color(Color.RED);

    for (int i = 0; i < l.size(); i++) {
        options.add(l.get(i));
        MarkerOptions marker = new MarkerOptions().position(l.get(i)).title("Bus")
                .snippet(newtime);
        marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE));

        // Adding marker on the Google Map
        googleMap.addMarker(marker);
    }

    googleMap.addPolyline(options);

    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(new LatLng(l.get(0).latitude, l.get(0).longitude)).zoom(18).build();

    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

}

在這里它將添加紅色線條,以根據需要更改顏色,只需修改options.color()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM