代码之家  ›  专栏  ›  技术社区  ›  James Lin

android谷歌地图视图的默认标记?

  •  7
  • James Lin  · 技术社区  · 15 年前

    我一直在网上搜索,所有教程都在讨论如何扩展覆盖图并将自定义图像放在上面。

    有更简单的方法吗?我只想要个记号笔,没什么特别的。

    詹姆斯

    2 回复  |  直到 13 年前
        1
  •  2
  •   Alex    15 年前

    如果您使用Eclipse作为IDE,那么可以将.png添加到/drawable hdpi、/drawable ldpi、/drawable mdpi目录中。然后,您可以放置并获取覆盖图的引用列表,如下所示:

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

    我从一个教程中得到了这段代码的大部分,我再也找不到链接了。覆盖层的操作非常简单。希望这有帮助。

        2
  •  0
  •   jeilsoft    11 年前

    如果您使用的是Google地图Android API v2,那么可以使用以下方法。

    mapView.getMap().addMarker(new MarkerOptions()
                                   .position(new LatLng(10, 10))
                                   .title("Hello world"));