2016-11-11 3 views
0

Я использую com.google.android.gms.maps.MapView и я хочу, чтобы скрыть текущее местоположение «маркер» (синий один на следующей картинке)Android MapView Апи - Изменение расположения маркера

enter image description here

Красный один мой маркер для текущего местоположения, и я хотел бы быть размещен в центре моего местоположения, теперь он помещен так, как будто это будет стрелка, указывающая вниз. Вы знаете, как я могу это сделать?

EDIT: Я думаю, что есть достаточно, чтобы разместить маркер над синим, и он покроет его. Как я могу это сделать?

Я placeing мой маркер так:

currentPositionMarker = googleMap.addMarker (. MarkerOptions новые() положение (место нахождения) .Icon (BitmapDescriptorFactory.fromResource (R.drawable.pin)));

ответ

0

Вы должны сделать это: view_custom_marker.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/custom_marker_view" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@drawable/marker_mask"> 

<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:layout_gravity="center_horizontal" 
    android:contentDescription="@null" 
    android:src="@drawable/avatar" /> 
</FrameLayout> 

Преобразовать этот вид в растровое изображение, используя код ниже

private Bitmap getMarkerBitmapFromView(@DrawableRes int resId) { 

    View customMarkerView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.view_custom_marker, null); 
    ImageView markerImageView = (ImageView) customMarkerView.findViewById(R.id.profile_image); 
    markerImageView.setImageResource(resId); 
    customMarkerView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
    customMarkerView.layout(0, 0, customMarkerView.getMeasuredWidth(), customMarkerView.getMeasuredHeight()); 
    customMarkerView.buildDrawingCache(); 
    Bitmap returnedBitmap = Bitmap.createBitmap(customMarkerView.getMeasuredWidth(), customMarkerView.getMeasuredHeight(), 
      Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(returnedBitmap); 
    canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN); 
    Drawable drawable = customMarkerView.getBackground(); 
    if (drawable != null) 
     drawable.draw(canvas); 
    customMarkerView.draw(canvas); 
    return returnedBitmap; 
} 
} 

Добавьте свой собственный маркер на карте готового обратного вызова.

@Override 
public void onMapReady(GoogleMap googleMap) { 
Log.d(TAG, "onMapReady() called with"); 
mGoogleMap = googleMap; 
MapsInitializer.initialize(this); 
addCustomMarker(); 
} 
private void addCustomMarker() { 
Log.d(TAG, "addCustomMarker()"); 
if (mGoogleMap == null) { 
    return; 
} 

// adding a marker on map with image from drawable 
mGoogleMap.addMarker(new MarkerOptions() 
.position(mDummyLatLng).icon(BitmapDescriptorFactory.fromBitmap(getMarkerBitmapFromView(R.drawable.avatar)))); 
} 
0

Вы можете установить точку привязки для изображения маркеров:

currentPositionMarker = 
    googleMap.addMarker(
     new MarkerOptions() 
      .position(location) 
      .anchor(0.5f, 0.5f) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); 

Вы можете скрыть слой моего местоположения делает

googleMap.setMyLocationEnabled(false); 
+0

как изменить или изменить маркер –

Смежные вопросы