我正在尝试使用myLocationOverlay.getMyLocation()方法来获取milocation;但它总是返回null,我尝试了启用gps、禁用gps、启用网络,两者都启用,但总是返回null。有人能帮我吗?
我把我所有的课程都放在这里,如果这对任何人有帮助的话
editarLugar extends MapActivity implements LocationListener{double latitud double经度GeoPoint yo DataBaseHelper ayudabbdd MapView eMapa MapController controladorMapa TextView eNombre TextView eDesc ImageView eFoto archivoImagen Uri imageUri
private MyLocationOverlay 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);
}
}}
发布于 2011-12-10 04:38:03
来自google代码:
getMyLocation
公共GeoPoint getMyLocation()
返回与最近设置的用户位置对应的GeoPoint。返回: GeoPoint,如果尚未设置,则返回null。
它可能还没有被设置,所以你必须等待它被设置好...
发布于 2015-11-26 13:30:45
希望这能帮助你们..。
myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
//Todo
}
});https://stackoverflow.com/questions/8446018
复制相似问题