我正在使用Here Map SDK,我需要显示一个带有圆形动画的蓝色图标,用于显示当前位置。
任何人都可以告诉我该怎么做。
现在我的代码只设置了蓝点的图标。我不知道如何添加圆圈动画。
请注意,mMap
引用为Map object from the Here Android SDK。
mMap.getPositionIndicator().setVisible(true);
mMap.getPositionIndicator().setZIndex(0);
mMap.setZoomLevel(15);
mMap.getPositionIndicator().setAccuracyIndicatorVisible(true);
mMap.getPositionIndicator().setMarker(createImage(R.drawable.ic_location_dot));
答案 0 :(得分:3)
启用Google地图的MyLocation层p>
googleMap.setMyLocationEnabled(true);
答案 1 :(得分:0)
对于javascript,您可以使用
map.addObject(new H.map.Circle(
// The central point of the circle
{lat:28.6071, lng:77.2127},
// The radius of the circle in meters
1000,
{
style: {
strokeColor: 'rgba(55, 85, 170, 0.6)', // Color of the perimeter
lineWidth: 2,
fillColor: 'rgba(0, 128, 0, 0.1)' // Color of the circle
}
}
));
android应该有类似的实现。
答案 2 :(得分:0)
试试这个:
mMap.setMyLocationEnabled(true);
启用或禁用my-location图层。 在启用并且位置可用时,我的位置层连续地绘制用户当前位置和方位的指示,并显示允许用户与其位置交互的UI控件(例如,启用或禁用相机跟踪它们的位置和方位)。
如果你把它放在下面会好多了:
@Override
public void onMapReady(GoogleMap googleMap) {
}
答案 3 :(得分:0)
我已成功测试此代码,并使用用户的当前位置调用addPulsatingEffect(Location userLocation)方法。
private Circle lastUserCircle;
private static final long PULSE_DURATION = 2000;
private static final float RADIUS = 200.0f;
private ValueAnimator lastPulseAnimator;
private void addPulsatingEffect(Location userLocation){
final LatLng userLatlng = new LatLng(userLocation.getLatitude(), userLocation.getLongitude());
if(lastPulseAnimator != null){
lastPulseAnimator.cancel();
}
if(lastUserCircle != null) {
lastUserCircle.setCenter(userLatlng);
}
lastPulseAnimator = valueAnimate(RADIUS, new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
if(lastUserCircle != null)
lastUserCircle.setRadius((Float) animation.getAnimatedValue());
else {
lastUserCircle = mMap.addCircle(new CircleOptions()
.center(userLatlng)
.radius((Float) animation.getAnimatedValue())
.strokeColor(Color.BLUE)
.strokeWidth(4.0f));
}
}
});
}
protected ValueAnimator valueAnimate(float radius, ValueAnimator.AnimatorUpdateListener updateListener){
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, radius);
valueAnimator.setDuration(PULSE_DURATION);
valueAnimator.addUpdateListener(updateListener);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.start();
return valueAnimator;
}
答案 4 :(得分:0)
对于这个用例,最好编写自己的位置指示器。
要做的三件事: 1:注册PositioningManager回调,将更新后的位置传递给您的代码。 2:使用所需图像创建MapMarker并将其添加到地图中。 4:创建具有所需颜色的MapCircle并将其添加到地图中。圆的半径应设置为Positioning Manager回调的精度参数。
这样做的逻辑是更新MapCircle的半径,并在从PositioningManager收到新位置时更新MapMarker和MapCircle的GeoCoordinate。
您可以通过使用计时器等方式添加动画,以便为任何准确度更改设置动画。
答案 5 :(得分:0)
/* create a MarkerOptions */
MarkerOptions mOptions = new MarkerOptions();
/* create a MarkerInfoAdapter */
MarkerInfoAdapter infoAdapter = new MarkerInfoAdapter(MapsActivity.this.getLayoutInflater());
/* set MarkerInfoAdapter into your Map object */
MapFragment googleMap = FragmentManager.FindFragmentById<MapFragment> (Resource.Id.map);
/* get the GoogleMap object */
GoogleMap myMap = googleMap.getMapAsync(this);
/* set myMap type */
myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
/* set the MarkerInfoAdapter */
myMap.clear(); /*
myMap.setInfoWindowAdapter(infoAdapter);
/* you must have your current location's LatLng */
mOptions.position(currentLatLng); /* reach the position of the LatLng for that mark */
/* set the icon for your current location using BitmapDescriptorFactory */
mOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
myMap.addMarker(mOptions);
/* modify your marker icon to HUE_BLUE */ mOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
答案 6 :(得分:0)
我遇到了和你一样的问题,经过两周的尝试后,各种选项,这行代码都适合我,所以你可以显示&#34;蓝色图标&#34;
m_map.setCenter(new GeoCoordinate(latitudeGPS, longitudeGPS, 0.0),Map.Animation.NONE);
m_mapFragment.getPositionIndicator().setVisible(true);
m_map.getPositionIndicator().setAccuracyIndicatorVisible(true);
Log.d("initialize bolita", "" + 1.1 );
PositioningManager.getInstance().start(PositioningManager.LocationMethod.GPS_NETWORK);m_map.addMapObject(m_positionIndicatorFixed);
确保您已请求清单上的所有权限。
答案 7 :(得分:0)
您可以通过com.here.android.mpa.mapping.PositionIndicator
类控制HERE Maps当前位置图标。
其实例保存在com.here.android.mpa.mapping.MapView
中,该实例可能被包裹在com.here.android.mpa.mapping.SupportMapFragment
之类的片段中。
示例:
mapFragment.getPositionIndicator().setVisible(true)
mapView.getPositionIndicator().setAccuracyIndicatorVisible(true)