使用myLocationOverlay.getMyLocation()返回null



我试图获得milocation方法myLocationOverlay.getMyLocation();但它总是返回null,我试过GPS启用,禁用,网络启用,都启用,但总是返回null。有人能帮我吗?

我把我所有的课,如果这能帮助任何人在我的情况

editarLugar extends MapActivity implements LocationListener{

latitud两倍双longitudGeoPoint哟DataBaseHelper ayudabbddMapView eMapaMapController controladorMapaTextView eNombreTextView eDescImageView eFoto文件archivoImagenUri imageUri

private MyLocationOverlay;

public void onCreate(Bundle savedInstanceState) {     
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.editarlugar);   
     eNombre = (TextView) findViewById(R.id.eNombre);
     eDesc = (TextView) findViewById(R.id.eDesc);
     eFoto = (ImageView) findViewById(R.id.eFoto);
     eMapa = (MapView) findViewById(R.id.editarMapa);
     /********************
     * Obtengo los datos del item, con intent procedente 
     * de otro activity   y tambien digo que tipo de accion es: Crear o Editar     
     *********************/
      final Bundle extras = getIntent().getExtras();
       String nombreClick = null;          

      if(extras!=null){
                 nombreClick = extras.getString("nombre");
                 estoyEditando(nombreClick,eNombre,eDesc,eFoto);
             }else{
                 //Estoy creando
             }

    /********************************************************************************** 
     * Instanciamos el mapa de google
     * Le ponemos controles de zoom
     **********************************************************************************/
   eMapa.setBuiltInZoomControls(true);
   eMapa.displayZoomControls(true);
   eMapa.setClickable(true);
   controladorMapa = eMapa.getController();  
   situame();
   eFoto.setOnClickListener(imagenClick);

}

/*****************************************************************************************************************************************  
  * 
  *     FUERA DE ONCREATE
  *     
  *     
  *******************************************************************************************************************************************/
 /****************
 * 
 * METODO PUENTE PARA GEOPOSICIONARME
 * 
 ****************/


  private void situame() {
        if(myLocationOverlay == null){
            myLocationOverlay = new MyLocationOverlay(this, eMapa);
            myLocationOverlay.runOnFirstFix(new Runnable() {
                public void run() {
                    myLocationOverlay.enableMyLocation();
                    controladorMapa().animateTo(myLocationOverlay.getMyLocation());
                    yo=myLocationOverlay.getMyLocation();
                }
            });
            mapOverlays().add(myLocationOverlay);
        }
    }
    private MapController controladorMapa(){
        return eMapa.getController();
    }
    private void animateTo(GeoPoint point) {
        controladorMapa().animateTo(point);
    }
    // Lista de capas que maneja el mapa
    protected List<Overlay> mapOverlays() {
        return eMapa.getOverlays();
    }


/************************************
 * Metodo para rellenar los campos de los views a partir de una busqueda
 * en la BBDD de un dato ya existente 
 * 
 * @param nombreClick Nombre del string para generar la busqueda
 * @param eNombre Nombre del textview del campo buscar
 * @param eDesc Nombre del textview del campo descripcion
 * @param eFoto Nombre dle imageView del campo foto
 */
private void estoyEditando(String nombreClick, TextView eNombre, TextView eDesc, ImageView eFoto) {

         estado = 2;//Estoy editando
         ayudabbdd.getLugarPorNombre(nombreClick);
         ArrayList<Object> datosLugar = ayudabbdd.getLugarPorNombre(nombreClick);
        //Paso los datos de array a las variables
        String nombre = nombreClick;
        String descripcion = (String) datosLugar.get(3).toString();
        String foto = (String)datosLugar.get(4).toString();
        //Los seteo
        eNombre.setText(nombre);
        eDesc.setText(descripcion);

        //Creo un objeto de tipo file, si existe genero la imageneo
        archivoImagen = new File(foto);             
        ayudabbdd.close();
}

/************************
 * Metodo obligatorio
 * 
 **********************/
@Override
protected boolean isRouteDisplayed() {
    return false;
}

 /**************************
 * 
 * Gestion boton menu
 * 
 *************************/ 
public boolean onCreateOptionsMenu(Menu menu) {
    if(estado==1){
    menu.add(Menu.NONE, 1, Menu.NONE, "Crear").setIcon(R.drawable.ic_menu_tick);
    menu.add(Menu.NONE, 2, Menu.NONE, "Cancelar").setIcon(R.drawable.ic_menu_stop);
    return true;
    }else{
        menu.add(Menu.NONE, 3, Menu.NONE, "Guardar").setIcon(R.drawable.ic_menu_tick);
        menu.add(Menu.NONE, 4, Menu.NONE, "Eliminar").setIcon(R.drawable.ic_menu_stop);
        return true;
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case 1:
            Crear(eNombre.getText().toString(),eDesc.getText().toString(),latitud,longitud,imageUri.toString());
        default:
            return super.onOptionsItemSelected(item);
    }
}

     /****************************
     * Funciones de la BBDD
     *   Crear
     *   Vuelve Atras
     *   Guardar
     *   Eliminar
     *********************/     

    public void Crear(String nuevoNombre,String nuevoDesc, double nuevoLat, double nuevoLong, String nuevoFoto){
        ayudabbdd = new DataBaseHelper(this);
        try{
        ayudabbdd.addLugar(nuevoNombre, nuevoDesc, nuevoLat, nuevoLong, nuevoFoto);
        }catch(Exception e)
        {
            Log.e("Error!", e.getMessage());
        }
        ayudabbdd.close();              
    }


  private OnClickListener imagenClick = new OnClickListener()
{
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Selecciona una imagen"),1);
        }   
    };

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        if (resultCode == RESULT_OK) {
                if (requestCode == 1) {

                         imageUri = data.getData();
                         eFoto.setImageURI(imageUri);
                }
        }
}
public String obtenerPath(Uri contentUri) {
        String [] proj={MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery( contentUri,proj,null,null,null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
}
public void onProviderDisabled(String arg0) {
    // TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
    if (location != null) {
        int lat = (int) (location.getLatitude() * 1E6);
        int lon = (int) (location.getLongitude() * 1E6);
        GeoPoint yo = new GeoPoint(lat, lon);
        animateTo(yo);
    }
}

}

From google code:

getMyLocation

public GeoPoint getMyLocation()

Returns a GeoPoint corresponding to the most-recently-set user location.
Returns:
    The GeoPoint, or null if none has been set.

它可能还没有被设置,所以你必须等待它被设置…

希望对大家有所帮助。

 myLocationOverlay.runOnFirstFix(new Runnable() {
        public void run() {
            //Todo
        }
 });

相关内容

  • 没有找到相关文章

最新更新