【问题标题】:User Tracks Moving Marker Animation用户轨迹移动标记动画
【发布时间】:2018-02-16 08:52:43
【问题描述】:

我正在收听用户位置并更新地图上的标记。但是我的代码删除了以前的标记并在新位置上放置了一个新标记。
我想要做的是沿着地图将标记从旧位置移动到新位置。

Marker playermarker;
public void onLocationChanged(final Location location) {

    if (playermarker != null) {
        playermarker.remove();
        playermarker = null;
    }
    LatLng latLng;
    latLng = new LatLng(location.getLatitude(), location.getLongitude());

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title("Thats me!");
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.raw.petyr));
    playermarker = googleMap.addMarker(markerOptions);

    //Toast.makeText(getActivity(), "lokasyon degisti",Toast.LENGTH_SHORT).show();

    mydb.child("relics").addValueEventListener(new ValueEventListener() {
    HashMap < String, relic > relics = new HashMap();

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            relics.put(childSnapshot.getKey(), childSnapshot.getValue(relic.class));
        }

        for (Map.Entry < String, relic > entry: relics.entrySet()) {
            Log.d("asd", "Key = " + entry.getKey() + ", Latitude = " + entry.getValue().getLatitude() + entry.getValue().getLongitude());
            int distance = (int) Math.floor(distance(location.getLatitude(), entry.getValue().getLatitude(), location.getLongitude(), entry.getValue().getLongitude(), 0, 0));
            distancetext.setText("You are " + String.valueOf(distance) + " meters away from relic!");

        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {}
    });
}

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    。不要在每次位置更改时都创建一个新的标记实例,只使用一个标记实例,如果有一次实例可用,则只更改该标记的位置,而不是每次都添加新标记。进行如下更改:

    if (playermarker == null) {
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng).
            markerOptions.title("Thats me!").
      markerOptions.icon(BitmapDescriptorFactory.fromResource(R.raw.petyr));
            playermarker = googleMap.addMarker(markerOptions);
        } else {
            playmarker.setPosition(latLng);
            // also set other things whatever you want
        }
    

    【讨论】:

    • 感觉标记还是被传送了。有什么动画让它像在地图上慢慢滑动一样吗?
    • 参考这将帮助您在给定路径上顺利移动标记stackoverflow.com/a/33885379/7423949
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多