如何在android中使用新坐标重绘地图标记

时间:2021-09-26 07:16:46

I am showing some points on my google map. I am able to show it on the first load. With onMapReady function.

我在谷歌地图上显示了一些要点。我能够在第一次加载时显示它。使用onMapReady函数。

@Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        map.setMyLocationEnabled(true);
        LatLng driver_point = new LatLng(driver_latitude, driver_longitude);
        LatLng pickup_point = new LatLng(pickup_latitude, pickup_longitude);
        LatLng drop_point = new LatLng(drop_latitude, drop_longitude);

        LatLngBounds.Builder builder = new LatLngBounds.Builder();
        if (driver_point.latitude != 0.0)
            builder.include(driver_point);
        builder.include(pickup_point);
        builder.include(drop_point);

        LatLngBounds bounds = builder.build();

        int width = getResources().getDisplayMetrics().widthPixels;
        int height = getResources().getDisplayMetrics().heightPixels;
        int padding = (int) (width * 0.10);

        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);

        map.animateCamera(cu);
        if (driver_point.latitude != 0.0)
            markerPoints.add(driver_point);
        markerPoints.add(pickup_point);
        markerPoints.add(drop_point);

        // Creating MarkerOptions
        MarkerOptions driver_opt = new MarkerOptions();
        // Setting the position of the marker
        driver_opt.position(driver_point);
        driver_opt.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_tiny));
        map.addMarker(driver_opt);

        // Creating MarkerOptions
        MarkerOptions pickup_opt = new MarkerOptions();
        // Setting the position of the marker
        pickup_opt.position(pickup_point);
        pickup_opt.icon(BitmapDescriptorFactory.fromResource(R.drawable.pickup_icon));
        map.addMarker(pickup_opt);

        MarkerOptions drop_opt = new MarkerOptions();
        // Setting the position of the marker
        drop_opt.position(drop_point);
        drop_opt.icon(BitmapDescriptorFactory.fromResource(R.drawable.dropoff_icon));
        map.addMarker(drop_opt);
    }

After a server call, i want to update the markers with new. How can I achieve that? Thanks in advance.

在服务器调用之后,我想用new更新标记。我怎样才能做到这一点?提前致谢。

2 个解决方案

#1


0  

Create a function and pass the new lat lng to it. If you want to clear previous markers simply call map.clear()

创建一个函数并将新的lat lng传递给它。如果要清除以前的标记,只需调用map.clear()

    public void drawmap(LatLng newlatlng)
{
    map.clear();
    map.addMarker(new MarkerOptions().position(newlatlng).title("Marker in ??"));
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(newlatlng,15.0f));
}

#2


0  

You can have multiple marker with default(red) markers.

您可以使用默认(红色)标记的多个标记。

LatLng coordinate1 = new LatLng(latitude1, longitude1);

CameraUpdate yourLocation1 = CameraUpdateFactory.newLatLngZoom(coordinate1,15);

mMap.animateCamera(yourLocation1);

///

LatLng coordinate2 = new LatLng(latitude2, longitude2);

CameraUpdate yourLocation2 = CameraUpdateFactory.newLatLngZoom(coordinate2,15);

mMap.animateCamera(yourLocation2);

///

LatLng coordinate3 = new LatLng(latitude3, longitude3);

CameraUpdate yourLocation3 = CameraUpdateFactory.newLatLngZoom(coordinate3,15);

mMap.animateCamera(yourLocation3);

#1


0  

Create a function and pass the new lat lng to it. If you want to clear previous markers simply call map.clear()

创建一个函数并将新的lat lng传递给它。如果要清除以前的标记,只需调用map.clear()

    public void drawmap(LatLng newlatlng)
{
    map.clear();
    map.addMarker(new MarkerOptions().position(newlatlng).title("Marker in ??"));
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(newlatlng,15.0f));
}

#2


0  

You can have multiple marker with default(red) markers.

您可以使用默认(红色)标记的多个标记。

LatLng coordinate1 = new LatLng(latitude1, longitude1);

CameraUpdate yourLocation1 = CameraUpdateFactory.newLatLngZoom(coordinate1,15);

mMap.animateCamera(yourLocation1);

///

LatLng coordinate2 = new LatLng(latitude2, longitude2);

CameraUpdate yourLocation2 = CameraUpdateFactory.newLatLngZoom(coordinate2,15);

mMap.animateCamera(yourLocation2);

///

LatLng coordinate3 = new LatLng(latitude3, longitude3);

CameraUpdate yourLocation3 = CameraUpdateFactory.newLatLngZoom(coordinate3,15);

mMap.animateCamera(yourLocation3);