Android: как сделать пользовательский просмотр (макет) для маркера на картах Google
-
27-10-2019 - |
Вопрос
Как сделать пользовательский вид для маркера или как сделать пользовательский макет. как это... И, пожалуйста, посмотрите на скриншот:
Решение
Я пока не кодирую Android, так что это основано в основном на последнем блоке кода здесь: http://code.google.com/apis/maps/articles/android_v3.html
Где это заканчивается только обычной реализацией карты, поэтому вы сделаете следующее, чтобы добавить маркер к существующей карте:
var myIcon=new google.maps.MarkerImage('my_icon.png');
var point=new google.maps.LatLng(someLatitude,someLongitude);
var marker = new google.maps.Marker({position: point,map: map, icon:mc});
Другие советы
Я мог бы немного опоздать, но я опубликую решение для других, кто столкнулся/столкнулся с аналогичной проблемой. Таким образом, в основном то, что вам нужно сделать (по крайней мере, для решения, которое вы ищете, то есть пользовательское изображение, наложенное на фонах, похожих на коробку),-это наводка на заказ на фоновом поле с помощью холста. Используя эту реализацию, вы можете эффективно создать растровое растровое значение из холста, которое вы можете затем назначить в качестве маркера для вашего «наложения» / « Кроме того, пожалуйста, воздержитесь от создания изображения для каждого наложения, так как это полностью разрушит вашу память/ ваше приложение, если вам придется одновременно иметь дело с тысячами таких обзоров Image. Вместо этого используйте Bitmapdrawables, которые можно назначить для наложений во время их конструкции, и не потребляйте почти достаточное количество памяти в качестве обзора Image.
public BitmapDrawable imageOnDrawable(int drawableBackground, Bitmap customImage)
{
//The following line is optional but I'd advise you to minimize the size of
//the size of the bitmap (using a thumbnail) in order to improve draw
//performance of the overlays (especially if you are creating a lot of overlays).
Bitmap customImageThumbnail = ThumbnailUtils.extractThumbnail(
customImage, 100, 100);
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId);
bm = Bitmap.createScaledBitmap(bm, 112, 120, false);
Canvas canvas = new Canvas(bm);
canvas.drawBitmap(bm, 0, 0, null);
// The 6,6 in the below line refer to the offset of the customImage/Thumbnail
// from the top-left corner of the background box (or whatever you want to use
// as your background)
canvas.drawBitmap(customImageThumbnail, 6, 6, null);
return new BitmapDrawable(bm);
}
пользовательский маркер для карт Google с использованием макета
View markerView = ((LayoutInflater) getActivity()
.getSystemService(
getActivity().LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.map_marker, null);
установить маркер
marker = map.addMarker(new MarkerOptions()
.position(latLng)
.title(strName)
.snippet(strStatus)
.icon(BitmapDescriptorFactory
.fromBitmap(createDrawableFromView(
getActivity(),
markerView))));
Создать растровый карту из Drawable
public static Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay()
.getMetrics(displayMetrics);
view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels,
displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(),
view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}