Получите изображение (png или растровое изображение) вашей фабрики и добавьте его на наложение карты.Сложная часть будет перерисовывать изображение в правильной точке экрана, когда пользователь прокручивает карту и / или увеличивает или уменьшает масштаб.Расширив класс ItemizedOverlay, вы можете переопределить метод draw () и перерисовать заводское изображение в соответствии с масштабом и относительным положением карты на экране устройства.Есть два подхода, которые я знаю.Сначала вы можете получить одно изображение, а затем изменить его масштаб, используя матричное преобразование, объясненное здесь .Кроме того, у вас может быть несколько изображений разных размеров, которые вы меняете в зависимости от уровня масштабирования - меньшие изображения используются при уменьшении масштаба.Кроме того, вы можете вообще не отображать изображение, если пользователь слишком сильно уменьшил изображение.
@Override
public void draw(Canvas canvas, MapView mapv, boolean shadow)
{
int zoom = mapv.getZoomLevel();
switch(zoom)
{
case 19:
setMarkersForZoomLevel19();
break;
case 18:
setMarkersForZoomLevel18();
break;
case 17:
setMarkersForZoomLevel17();
break;
case 16:
setMarkersForZoomLevel16();
break;
default:
// Hide the markers or remove the overlay from the map view.
mapv.getOverlays().clear();
}
area.drawArea(canvas, mapv);
// Putting this call here rather than at the beginning, ensures that
// the Overlay items are drawn over the top of canvas stuff e.g. route lines.
super.draw(canvas, mapv, false);
}
private void setMarkersForZoomLevel19()
{
for (MyOverlayItem item : mOverlays)
{
item.setMarker(areaPointIcon48);
}
}
Здесь показан один из способов установки маркеров на значок разного размера.