如何在android中改变位置变化的标记位置

时间:2016-07-04 10:26:26

标签: java android google-maps dictionary google-maps-api-3

我在地图上有一个标记,我需要更改标记的位置。

这是我的代码:

public void onLocationChanged(Location location) {

    map.clear();
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
    if (Home_Activity.this.markerob != null) {
        Home_Activity.this.markerob.remove();
        markerob.setPosition(latLng);
    }
    latitude=location.getLatitude();
    longitude=location.getLongitude();
    CameraUpdate cameraUpdate =CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(new LatLng(location.getLatitude(), location.getLongitude())).zoom(18.0f).build());

    MarkerOptions options = new MarkerOptions().position(latLng);
    //options.title( getAddressFromLatLng( latLng ) );

    options.icon(BitmapDescriptorFactory.fromBitmap(Bitmap.createScaledBitmap(
            BitmapFactory.decodeResource(getResources(),
                    spmain.getavatarimage()), 90, 90, false)));

    //map.addMarker(new MarkerOptions().position(latLng));
    Toast.makeText(getApplicationContext(), "lat="+latLng,Toast.LENGTH_SHORT).show();

    options.position(latLng);
    map.getUiSettings().setRotateGesturesEnabled(true);
    map.animateCamera(cameraUpdate);
    map.moveCamera(cameraUpdate);
    map.addMarker(options);


    //locationManager.removeUpdates(this);
}

我添加了onLocationChanged方法,其中包含位置详细信息,但未在新位置移动标记。

1 个答案:

答案 0 :(得分:3)

检查您的地图是否添加了标记(这是第一次)。如果没有,则添加标记并保留对该标记的引用。对于onLocationChanged的后续调用,只需使用相同的引用来更新纬度和经度。

    Marker myMarker;
    if(myMarker == null){
       marker = map.addMarker(options);
    } 
    else {
       marker.setPosition(new LatLng(location.getLatitude(),location.getLongitude()));
    }

希望这会有所帮助。让我知道这不起作用。将发布更相关的代码。