Default marker for android google MAPVIEW?

删除回忆录丶 提交于 2019-12-04 04:50:38

If you are using Eclipse as your IDE, you can add a .png, for example, to your /drawable-hdpi, /drawable-ldpi, /drawable-mdpi directories. You can then place and obtain a list of references to your overlays somewhat like this:

package com.practice.mapper;

import java.util.ArrayList;

import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class Itemization extends ItemizedOverlay<OverlayItem> {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

    public Itemization(Drawable defaultMarker) {

        super(boundCenterBottom(defaultMarker));
        // super(defaultMarker);

    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    @Override
    public int size() {
        return mOverlays.size();
    }

}



package com.practice.mapper;

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ZoomControls;

public class Mapper extends MapActivity implements LocationListener {

    Location presentLocation;
    ZoomControls z;
    LinearLayout linearLayout;
    MapView mapView;
    List<Overlay> mapOverlays;
    Drawable drawable;
    Itemization itemizedOverlay;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);

        mapOverlays = mapView.getOverlays();
        drawable = this.getResources().getDrawable(R.drawable.androidmarker);
        itemizedOverlay = new Itemization(drawable);

        GeoPoint point = new GeoPoint(19240000, -99120000);
        OverlayItem overlayitem = new OverlayItem(point, "", "");
        itemizedOverlay.addOverlay(overlayitem);

        GeoPoint point2 = new GeoPoint(35410000, 139460000);
        OverlayItem overlayitem2 = new OverlayItem(point2, "", "");
        itemizedOverlay.addOverlay(overlayitem2);

        mapOverlays.add(itemizedOverlay);
    }

    public void btnUpdateClicked(View v) {

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        LocationProvider p = lm.getProvider(LocationManager.GPS_PROVIDER);

        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 1, this);

        List<String> enabledProv = lm.getProviders(true);

        Location l1 = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        Location l2 = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        Location l3 = lm.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);

        Button b = new Button(this.getApplicationContext());
        b.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {

            }});

        lm.toString();
    }

    @Override
    protected boolean isRouteDisplayed() {

        return false;
    }

    public void onLocationChanged(Location location) {

        presentLocation = location;
        Log.d("TEST", "New location received");
    }

    public void onProviderDisabled(String provider) {

    }

    public void onProviderEnabled(String provider) {

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {

    }
}

I got most of this code from a tutorial I can no longer find the link to. The overlays are pretty simple to manipulate. Hope this helps.

If you are using Google Maps Android API v2, you can use following method.

mapView.getMap().addMarker(new MarkerOptions()
                               .position(new LatLng(10, 10))
                               .title("Hello world"));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!