Изображение в Google Maps (Android) - PullRequest
1 голос
/ 12 марта 2011

У меня есть карта Google в моем приложении, но эта карта содержит пустую часть в нужном мне месте (например, карта фабрики). Затем я хочу поместить карту настройки в это место, поэтому, когда пользователь перемещается рядом с фабрикой, появляется моя карта, а не пустая часть.

Я ищу любое решение, спасибо.

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

Получите изображение (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);            
    }
}

Здесь показан один из способов установки маркеров на значок разного размера.

0 голосов
/ 26 июля 2011

Вы можете просто разместить чертеж в качестве маркера в овеле. Это приведет к тому, что наложение будет привязано к заданному положению на карте на основе GeoPoint.

Чтобы сделать это, замените маркер наложения на имеющийся у вас чертеж, а затем добавьте элемент в наложение с этим чертежом.

            private void addOverlayItem(GeoPoint point,int radius){
    //create circle
    Circle circle = new Circle(Color.RED,radius);

    //manipulate overlay 
    OverlayItem overlayitem = new OverlayItem(point,null,null);
    overlayitem.setMarker(circle);

    //add circle to overlay
    boundaryitemizedOverlay.addOverlay(overlayitem);
}
...