Map 如何在地图上显示更多点(地质点)?

Map 如何在地图上显示更多点(地质点)?,map,point,Map,Point,目前,我可以显示一个点,即我在代码中装箱的第一个点(pointStatie),但我希望同时显示这两个点。 我希望显示我所在的点和我从另一个类传递坐标的另一个点 我目前的代码是: package aexp.elistcbox; import android.os.Bundle; import android.provider.SyncStateContract.Constants; import com.google.android.maps.MapActivity; import com.g

目前,我可以显示一个点,即我在代码中装箱的第一个点(pointStatie),但我希望同时显示这两个点。 我希望显示我所在的点和我从另一个类传递坐标的另一个点

我目前的代码是:

package aexp.elistcbox;

import android.os.Bundle;
import android.provider.SyncStateContract.Constants;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.Criteria;
import android.util.Log;
import android.widget.Toast;
import android.location.Geocoder;
import android.location.Address;
import java.util.List;
import java.util.Locale;
import java.io.*;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;

public class GPSLocatorActivity extends MapActivity 
{
    public MapView mapView;
    public MapController mapController;
    public LocationManager locationManager;
    public LocationListener locationListener;
    public String best;


  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_view);

    mapView = (MapView) findViewById(R.id.mapView);

    mapView.setSatellite(false);

    mapView.setBuiltInZoomControls(true);

    mapController = mapView.getController();
    mapController.setZoom(13); 

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

      locationListener = new GPSLocationListener();

      Bundle extras = getIntent().getExtras(); 
      if(extras !=null)
      {
       double longitudine = extras.getDouble("long");
       double latitudine = extras.getDouble("lat");

       ((GPSLocationListener) locationListener).setLongitudine(longitudine);
       ((GPSLocationListener) locationListener).setLatitudine(latitudine);

       Log.e("longitudine", "* " + ((GPSLocationListener) locationListener).setLongitudine(longitudine));
       Log.e("latitudine", "* " + ((GPSLocationListener) locationListener).setLatitudine(latitudine));
      }

      String provider = null;


      if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
          provider = LocationManager.GPS_PROVIDER;
      } else 
          if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
              provider = LocationManager.NETWORK_PROVIDER;
          }

      if(provider != null) {
          locationManager.requestLocationUpdates(provider, 60000, 15, locationListener);
      }

      Criteria crit = new Criteria();
      crit.setAccuracy(Criteria.ACCURACY_FINE);
      best = locationManager.getBestProvider(crit, false);
      locationManager.requestLocationUpdates(best, 60000, 15, locationListener);

      Location loc = locationManager.getLastKnownLocation(provider);
      locationListener.onLocationChanged(loc);

  }

  @Override
  protected boolean isRouteDisplayed() {
    return false;
  }

  @Override
  protected void onResume() {
      super.onResume();
      //locationManager.requestLocationUpdates(best, 10000, 1, locationListener);
      Toast.makeText(this, "GPS tracking started",
                Toast.LENGTH_SHORT).show();

         // Start location updates; 5s/5m
            LocationManager locManager = (LocationManager)getSystemService(
                Context.LOCATION_SERVICE);
            locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    60000, 15, locationListener);

            Criteria crit = new Criteria();
            crit.setAccuracy(Criteria.ACCURACY_FINE);
            String provider = locManager.getBestProvider(crit, true);
            Location loc = locManager.getLastKnownLocation(provider);
  }

  @Override
  protected void onPause() {
      super.onPause();
      //locationManager.removeUpdates(locationListener);

      Toast.makeText(this, "GPS tracking stopped", 
          Toast.LENGTH_SHORT).show();

      LocationManager locManager = (LocationManager)getSystemService(
              Context.LOCATION_SERVICE);
          locManager.removeUpdates(locationListener);

  }


  private class GPSLocationListener implements LocationListener 
  {
    double longitudine;
    double latitudine;

    public double setLongitudine(double longitudine) {
        return this.longitudine = longitudine;
    }

    public double setLatitudine(double latitudine) {
        return this.latitudine = latitudine ;
    }

    public void onLocationChanged(Location location) {  
       Toast.makeText(GPSLocatorActivity.this, "Te plimbi",
                Toast.LENGTH_SHORT).show();

      if (location != null) {
       Log.e("longitudine", "*2 " + longitudine);
       Log.e("latitudine", "*2 " + latitudine);
          GeoPoint pointStatie = new GeoPoint(
                  (int) (latitudine * 1E6), 
                  (int) (longitudine * 1E6));


        GeoPoint point = new GeoPoint(
            (int) (location.getLatitude() * 1E6), 
            (int) (location.getLongitude() * 1E6));

        // afisaza coordonatele
        /*
        Toast.makeText(getBaseContext(), 
            "Latitude: " + location.getLatitude() + 
            " Longitude: " + location.getLongitude(), 
            Toast.LENGTH_SHORT).show();
         */     
        mapController.animateTo(point);
        mapController.animateTo(pointStatie);
        mapController.setZoom(13);
        //mapView.invalidate();

        // add marker for people point
        MapOverlay mapOverlay = new MapOverlay();
        mapOverlay.setPointToDraw(point);
        mapOverlay.setPointToDraw(pointStatie);

        List<Overlay> listOfOverlays = mapView.getOverlays();
        listOfOverlays.clear();
        listOfOverlays.add(mapOverlay);

        String address = ConvertPointToLocation(point);
        Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show(); 

        String addressStatie = ConvertPointToLocation(pointStatie);
        Toast.makeText(getBaseContext(), addressStatie, Toast.LENGTH_SHORT).show();
      }

    }

    public String ConvertPointToLocation(GeoPoint point) {   
        String address = "";
        Geocoder geoCoder = new Geocoder(
            getBaseContext(), Locale.getDefault());
        try {
          List<Address> addresses = geoCoder.getFromLocation(
            point.getLatitudeE6()  / 1E6, 
            point.getLongitudeE6() / 1E6, 1);

          if (addresses.size() > 0) {
            for (int index = 0; 
        index < addresses.get(0).getMaxAddressLineIndex(); index++)
              address += addresses.get(0).getAddressLine(index) + " ";
          }
        }
        catch (IOException e) {        
          e.printStackTrace();
        }   

        return address;
      }

    class MapOverlay extends Overlay
    {
      private GeoPoint pointToDraw;

      public void setPointToDraw(GeoPoint point) {
        pointToDraw = point;
      }

      public GeoPoint getPointToDraw() {
        return pointToDraw;
      }

      @Override
      public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);           

        // convert point to pixels
        Point screenPts = new Point();
        mapView.getProjection().toPixels(pointToDraw, screenPts);

        // add marker
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mark_red);
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);    
        return true;
      }
    }

    public void onProviderDisabled(String provider) {
    }
    public void onProviderEnabled (String provider) {
    }
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
  }
}
包aexp.elistcbox;
导入android.os.Bundle;
导入android.provider.SyncStateContract.Constants;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapView;
导入com.google.android.maps.MapController;
导入com.google.android.maps.GeoPoint;
导入android.content.Context;
导入android.content.Intent;
导入android.content.res.Resources;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.location.Criteria;
导入android.util.Log;
导入android.widget.Toast;
导入android.location.Geocoder;
导入android.location.Address;
导入java.util.List;
导入java.util.Locale;
导入java.io.*;
导入com.google.android.maps.Overlay;
导入com.google.android.maps.OverlayItem;
导入android.graphics.Canvas;
导入android.graphics.Point;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.drawable.drawable;
公共类GPSLocatorActivity扩展了MapActivity
{
公共地图视图;
公共地图控制器;
公共场所经理;
公共场所监听器场所监听器;
公共字符串最好;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map\u视图);
mapView=(mapView)findViewById(R.id.mapView);
mapView.setSatellite(假);
mapView.SetBuilTinZoomControl(真);
mapController=mapView.getController();
mapController.setZoom(13);
locationManager=(locationManager)getSystemService(Context.LOCATION\u服务);
locationListener=新的GPSLocationListener();
Bundle extras=getIntent().getExtras();
如果(附加值!=null)
{
double longitudine=额外的getDouble(“长”);
双纬度=额外的双纬度(“纬度”);
((GPSLocationListener)locationListener).setLongitudine(longitudine);
((GPSLocationListener)locationListener).setLatitudine(latitudine);
Log.e(“longitudine”,“*”+((GPSLocationListener)locationListener).setLongitudine(longitudine));
Log.e(“latitudine”,“*”+((GPSLocationListener)locationListener).setLatitudine(latitudine));
}
字符串提供程序=null;
if(locationManager.isProviderEnabled(locationManager.GPS\U提供程序)){
provider=LocationManager.GPS\u provider;
}否则
if(locationManager.isProviderEnabled(locationManager.NETWORK_PROVIDER)){
provider=LocationManager.NETWORK\u provider;
}
if(提供程序!=null){
locationManager.RequestLocationUpdate(提供者,60000,15,locationListener);
}
Criteria crit=新标准();
临界设定精度(标准精度);
best=locationManager.getBestProvider(crit,false);
locationManager.RequestLocationUpdate(最佳,60000,15,locationListener);
Location loc=locationManager.getLastKnownLocation(提供者);
locationListener.onLocationChanged(loc);
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}
@凌驾
受保护的void onResume(){
super.onResume();
//locationManager.RequestLocationUpdate(最佳,10000,1,locationListener);
Toast.makeText(这是“GPS跟踪开始”,
吐司。长度(短)。show();
//开始位置更新;5s/5m
LocationManager LocationManager=(LocationManager)getSystemService(
上下文、位置和服务);
LocationManager.RequestLocationUpdate(LocationManager.GPS\u提供程序,
60000,15,locationListener);
Criteria crit=新标准();
临界设定精度(标准精度);
字符串提供程序=locManager.getBestProvider(crit,true);
Location loc=locManager.getLastKnownLocation(提供者);
}
@凌驾
受保护的void onPause(){
super.onPause();
//locationManager.RemoveUpdate(locationListener);
Toast.makeText(这是“GPS跟踪停止”,
吐司。长度(短)。show();
LocationManager LocationManager=(LocationManager)getSystemService(
上下文、位置和服务);
LocationManager.RemoveUpdate(locationListener);
}
私有类GPSLocationListener实现LocationListener
{
双纵联;
双纬度;
公共双经纬仪(双经纬仪){
返回此项。longitudine=longitudine;
}
公共双纬度(双纬度){
返回this.latitudine=latitudine;
}
public void onLocationChanged(位置){
Toast.makeText(GPSLocatorActivity.this,“Te plimbi”,
吐司。长度(短)。show();
如果(位置!=null){
Log.e(“长尾鸟”和“*2”+长尾鸟);
Log.e(“纬度”、“2”+纬度);
GeoPoint pointStatie=新的地质点(
(国际)(纬度*1E6),
(内部)(纵向*1E6));
地质点=新的地质点(
(int)(location.getLatitude()*1E6),
(int)(location.getLongitude()*1E6));
//阿菲萨科多纳泰勒酒店
/*
Toast.makeText(getBaseContext(),
“纬度:”+位置。getLatitude()+
“经度:”+location.getLongitude(),
吐司。长度(短)。show();
*/     
mapController.animateTo(点);
mapController.animateTo(pointStatie);
mapController.setZoom(13);
//mapView.invalidate();
//为人员点添加标记
MapOverlay MapOverlay=ne
GeoPoint point2 = new GeoPoint(
    (int) (location2.getLatitude() * 1E6), 
    (int) (location2.getLongitude() * 1E6));
mapOverlay.setPointToDraw(point2);