Frage

So ermitteln Sie benutzerdefinierte Ansicht für Marker oder wie Sie benutzerdefiniertes Layout erstellen. so was... enter image description here Und bitte schauen Sie sich Screenshot an:

enter image description here

War es hilfreich?

Lösung

Ich codiere Android noch nicht, daher basiert dies größtenteils auf dem letzten Codeblock hier: http://code.google.com/apis/maps/articles/android_v3.html

Wo es nur eine reguläre Kartenimplementierung ist, machen Sie Folgendes, um einer vorhandenen Karte einen Marker hinzuzufügen:

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});

Andere Tipps

Ich mag etwas spät sein, aber ich werde eine Lösung für andere veröffentlichen, die sich mit einem ähnlichen Problem konfrontiert haben. Im Grunde genommen müssen Sie also tun (zumindest für die von Ihnen suchende Lösung, dh ein benutzerdefiniertes Bild, das auf einem kastenähnlichen Hintergrund auferlegt wird), ist das CustomImage in der Hintergrundbox mit Hilfe einer Leinwand auferlegt. Mit dieser Implementierung können Sie effektiv ein BitmapDrawable aus der Leinwand erstellen, das Sie dann als Marker für Ihr "Overlay" / "iptIateOverlay" zuweisen können. Bitte beachten Sie auch, dass Sie für jedes Overlay eine ImageView erstellen, da dies Ihr Gedächtnis/ Ihre App völlig zerstört, wenn Sie gleichzeitig mit Tausenden solcher ImageViews umgehen müssen. Verwenden Sie stattdessen Bitmapdrawables, die während ihrer Konstruktion den Overlays zugeordnet werden können, und verbrauchen Sie nicht annähernd genug Speicher als ImageView.

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);

}

Benutzerdefinierte Markierung für Google Maps mit einem Layout

View markerView = ((LayoutInflater) getActivity()
                        .getSystemService(
                                getActivity().LAYOUT_INFLATER_SERVICE))
                        .inflate(R.layout.map_marker, null);

Marker einstellen

 marker = map.addMarker(new MarkerOptions()
                                        .position(latLng)
                                        .title(strName)
                                        .snippet(strStatus)
                                        .icon(BitmapDescriptorFactory
                                                .fromBitmap(createDrawableFromView(
                                                        getActivity(),
                                                        markerView))));

Erstellen Sie Bitmap von 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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top