gpt4 book ai didi

android - 如何在 Google Maps v2 android 中平稳地移动当前位置标记

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:31 25 4
gpt4 key购买 nike

我已经为我的位置放置了一个标记。我想像谷歌地图应用程序一样平稳地移动我的标记。当我在车里不停地移动时,蓝色圆圈移动得非常流畅。我想为我的应用程序实现相同的功能。我如何在我的应用程序上实现它?

到目前为止,我的位置标记只是在位置发生变化时跳到不同的位置,并在那里标记标记。

这是我所拥有的:

 googleMap.setMyLocationEnabled(true);

因此自动调用 onMyLocationChange 方法:

@Override
public void onMyLocationChange(Location location)
{
curlat = location.getLatitude();
curlong = location.getLongitude();

if (markermylocation != null)
{
markermylocation.remove();
}

curlat = location.getLatitude();
curlong = location.getLongitude();
myLocation(curlat, curlong, username, imageURL, ZOOMVALUE);
}

在mylocaiton方法中:

private void myLocation(double lat, double lng, String name, String url, float zoom)
{
if(firsttime == 1)
{
LatLng ll = new LatLng(lat,lng);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(ll, zoom);
googleMap.animateCamera(update);
firsttime = 0;
}

final String uname = name;
curlat = lat;
curlong = lng;
LatLng position = new LatLng(curlat, curlong);

markerOptionsmylocaiton = new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromBitmap(icon)).title(uname).anchor(0.5f, 1f);
markermylocation = googleMap.addMarker(markerOptionsmylocaiton);

LatLng latlang = new LatLng(curlat, curlong);
animateMarker(markermylocation, latlang, false);
}

因此每次调用 mylocation 时,标记都会被删除并调用 mylocation 方法,然后在新位置创建标记。相反,我想像谷歌地图一样顺利过渡标记?如何实现?

更新:

在这方面工作了几次之后:我终于找到了这段代码,但后来我的标记没有出现:

我正在使用下面的方法并且每次都在 myLocation 方法中调用它。

public void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker)
{
final Handler handler = new Handler();
final long start = SystemClock.uptimeMillis();
Projection proj = googleMap.getProjection();
Point startPoint = proj.toScreenLocation(marker.getPosition());
final LatLng startLatLng = proj.fromScreenLocation(startPoint);
final long duration = 500;

final Interpolator interpolator = new LinearInterpolator();

handler.post(new Runnable()
{
@Override
public void run()
{
long elapsed = SystemClock.uptimeMillis() - start;
float t = interpolator.getInterpolation((float) elapsed
/ duration);
double lng = t * toPosition.longitude + (1 - t)
* startLatLng.longitude;
double lat = t * toPosition.latitude + (1 - t)
* startLatLng.latitude;
marker.setPosition(new LatLng(lat, lng));

if (t < 1.0)
{
// Post again 16ms later.
handler.postDelayed(this, 16);
}
else
{
if (hideMarker)
{
marker.setVisible(false);
}
else
{
marker.setVisible(true);
}
}
}
});
}

谢谢!

最佳答案

您好,我的一个项目中也有同样的东西,而且效果很好。

在此行之后添加以下代码:

marker.setPosition(new LatLng(lat, lng));

//this code
if (googleMap != null)
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 15.0f));

希望对您有所帮助。谢谢

关于android - 如何在 Google Maps v2 android 中平稳地移动当前位置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26091591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com