如果谷歌地图上的Android应用关闭了GPS怎么办

如果谷歌地图上的Android应用关闭了GPS怎么办,android,google-maps,android-layout,android-edittext,Android,Google Maps,Android Layout,Android Edittext,我想要的是一个图形用户界面,如果全球定位系统是离线的,所以用户可以输入当前地址 我正在用谷歌地图在Eclipse中构建一个Android应用程序。我的一项活动在打开时会显示地图视图。我想做的是,如果GPS未打开,而不是加载地图,我希望活动显示EditText文本视图,用户可以在其中输入其当前位置的地址,然后在输入此地址后,地图视图将显示。我有所有的逻辑来获取GPS布尔值以显示GPS是否打开,但我真正需要的是Activity.java和layout xml逻辑,它将根据GPS是否打开来显示这些GU

我想要的是一个图形用户界面,如果全球定位系统是离线的,所以用户可以输入当前地址

我正在用谷歌地图在Eclipse中构建一个Android应用程序。我的一项活动在打开时会显示地图视图。我想做的是,如果GPS未打开,而不是加载地图,我希望活动显示EditText文本视图,用户可以在其中输入其当前位置的地址,然后在输入此地址后,地图视图将显示。我有所有的逻辑来获取GPS布尔值以显示GPS是否打开,但我真正需要的是Activity.java和layout xml逻辑,它将根据GPS是否打开来显示这些GUI项目。因此,如果GPS在地图视图上,则会显示;如果GPS不在地图视图上,则活动将显示一个输入地址的区域和一个按钮;单击按钮后,此逻辑将在地图视图上显示用户输入的位置

Activity.java文件

 @SuppressLint("ShowToast")
      public class MapViewActivity extends FragmentActivity {
            static LatLng currentLatLng;
            LatLng currentLocation;
            private GoogleMap map;
            boolean firstPass = true;
            double currentLat;
            double currentlong;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map_view);

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    boolean isGPS = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

    showCurrentLocationOnMap(); 
    try {
        showSheltersAndFuelStops();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
//This will change when SQL connection string is implemented.
private void showSheltersAndFuelStops() throws IOException {
    List<McDonalds> mcdList = new ArrayList<McDonalds>();
    List<Subway> subwayList = new ArrayList<Subway>();
    String subwayRoswell1 = "1307 N Main St, Roswell, NM, 88203";
    String subwayRoswell2 = "1701 W Second St, Roswell, NM, 88201";
    String subwayLC1 = "2001 E Lohman, Las Cruces, NM, 88001";
    String subwayLC2 = "2821 N Telshor, Las Cruces, NM 88011";
    String mcdonaldsRoswell1 = "720 N Main St, Roswell, NM, 88201";
    String mcdonaldsRoswell2 = "1804 S Main St, Roswell, NM, 88203";
    String mcdonaldsLC1 = "4810 Mesa Grande, Las Cruces, NM, 88012";
    String mcdonaldsLC2 = "571 Walton Blvd, Las Cruces, NM, 88001";

    Subway subway = new Subway(" 1307 N Main St, Roswell, NM, 88203", 1.58, 8.0);
    subwayList.add(subway);
    Subway subway1 = new Subway(" 1701 W Second St, Roswell, NM, 88201", 2.47, 12.0);
    subwayList.add(subway1);
    Subway subsLC = new Subway(" 2001 E Lohman, Las Cruces, NM, 88001", 147.99, 185.0);
    subwayList.add(subsLC);
    Subway subsLC1 = new Subway(" 2821 N Telshor Drive, Las Cruces, NM, 88011", 147.12, 200.0);
    subwayList.add(subsLC1);

    //This will be replaced by a Read Only Stored procedure that gets the List of Shelters
    McDonalds mcdonalds = new McDonalds(" 720 N Main St, Roswell, NM, 88201", 1.08, 8.0);
    mcdList.add(mcdonalds);
    McDonalds mcdonalds1 = new McDonalds(" 1804 S Main St, Roswell, NM, 88203", 2.9, 12.0);
    mcdList.add(mcdonalds1);
    McDonalds mcdonaldslc = new McDonalds(" 4810 Mesa Grande, Las Cruces, NM, 88012", 143.2, 185.0);
    mcdList.add(mcdonaldslc);
    McDonalds mcdonaldslc1 = new McDonalds(" 571 Walton Blvd, Las Cruces, NM, 88001", 147.62, 200.0);
    mcdList.add(mcdonaldslc1);

    showFuelStops(subwayRoswell1);
    showFuelStops(subwayRoswell2);
    showFuelStops(subwayLC1);
    showFuelStops(subwayLC2);
    showShelters(mcdonaldsRoswell1);
    showShelters(mcdonaldsRoswell2);
    showShelters(mcdonaldsLC1);
    showShelters(mcdonaldsLC2);
}


private void showFuelStops(String location) throws IOException{
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());  
    List<Address> addresses;

    addresses = geocoder.getFromLocationName(location, 1);
    if(addresses.size() > 0) {
        BitmapDescriptor subwayBitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.fillingstation);
        currentLat= addresses.get(0).getLatitude();
        currentlong= addresses.get(0).getLongitude();
        LatLng subLoc = new LatLng(currentLat, currentlong);
        Marker fuelMarker = map.addMarker(new MarkerOptions().position(subLoc).icon(subwayBitmapDescriptor).title("Subway, " + location));

    }       
}

private void showShelters(String location) throws IOException{
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());  
    List<Address> addresses;

    addresses = geocoder.getFromLocationName(location, 1);
    if(addresses.size() > 0) {
        BitmapDescriptor subwayBitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.shelter);
        double latitude= addresses.get(0).getLatitude();
        double longitude= addresses.get(0).getLongitude();
        LatLng subLoc = new LatLng(latitude, longitude);
        Marker hamburg = map.addMarker(new MarkerOptions().position(subLoc).icon(subwayBitmapDescriptor).title("McDonalds, " + location));

    }       
}

private void showCurrentLocationOnMap(){
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    SupportMapFragment mf= (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);

    map = mf.getMap();
    //map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    LocationListener ll = new Mylocationlistener();
    boolean isGPS = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

    if (!isGPS){
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.putExtra("enabled", true);
        sendBroadcast(intent);
    }

    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 10, ll);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.map_view, menu);
    return true;
}
/**
 *Mylocationlistener class will give the current GPS location 
 *with the help of Location Listener interface 
 */
private class Mylocationlistener implements LocationListener {
    private boolean zoomed = false;
    @Override
    public void onLocationChanged(Location location) {

        if (location != null) {
            // ---Get current location latitude, longitude---

            Log.d("LOCATION CHANGED", location.getLatitude() + "");
            Log.d("LOCATION CHANGED", location.getLongitude() + "");
            currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
            currentLatLng = new LatLng(location.getLatitude(), location.getLongitude());
            Marker currentLocationMarker = map.addMarker(new MarkerOptions().position(currentLocation).title("Current Location"));
            // Move the camera instantly to hamburg with a zoom of 15.
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15));
            // Zoom in, animating the camera.
            if (!zoomed) {
                map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null);
                zoomed = true;
            }
            if (!firstPass){
                currentLocationMarker.remove();
            }
            firstPass = false;
            Toast.makeText(MapViewActivity.this,"Latitude = "+
                    location.getLatitude() + "" +"Longitude = "+ location.getLongitude(),
                    Toast.LENGTH_LONG).show();

        } else {

        }
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

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

  }
@SuppressLint(“showtoos”)
公共类MapViewActivity扩展了FragmentActivity{
静态LatLng电流LatLng;
车床定位;
私人谷歌地图;
布尔值firstPass=true;
双电流LAT;
双电流长;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u map\u视图);
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
布尔值isGPS=lm.isProviderEnabled(LocationManager.GPS\u提供程序);
showCurrentLocationOnMap();
试一试{
ShowShelter和FuelStops();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
//当实现SQL连接字符串时,这将更改。
私有void showSheltersAndFuelStops()引发IOException{
List mcdList=新的ArrayList();
List subwayList=新建ArrayList();
字符串子通道Roswell 1=“北大街1307号,罗斯韦尔,新墨西哥州,88203”;
字符串子通道Roswell2=“1701 W秒街,罗斯韦尔,新墨西哥州,88201”;
字符串subwayLC1=“2001 E Lohman,Las Cruces,NM,88001”;
字符串subwayLC2=“2821 N Telshor,Las Cruces,NM 88011”;
String mcdonaldsRoswell1=“美国新墨西哥州罗斯韦尔市北大街720号,邮编88201”;
String mcdonaldsRoswell2=“新墨西哥州罗斯韦尔市南大街1804号,邮编88203”;
String mcdonaldlslc1=“4810梅萨格兰德,拉斯克鲁斯,新西兰,88012”;
String mcdonaldlslc2=“新泽西州拉斯克鲁斯沃尔顿大道571号,邮编88001”;
地铁=新地铁(“北大街1307号,新墨西哥州罗斯韦尔,邮编88203”,1.58,8.0);
地铁列表。添加(地铁);
地铁1号线=新地铁(“新墨西哥州罗斯韦尔第二大街西1701号,邮编88201”,2.47,12.0);
子通道列表。添加(子通道1);
Subway subsLC=新地铁(“2001 E Lohman,Las Cruces,NM,88001”,147.99,185.0);
子线路列表。添加(子线路列表);
subsLC1=新地铁(“新墨西哥州拉斯克鲁斯Telshor大道北侧2821号,邮编88011”,147.12,200.0);
子线路表。添加(子线路1);
//这将被获取避难所列表的只读存储过程所取代
麦当劳麦当劳=新麦当劳(“新墨西哥州罗斯威尔市北大街720号,邮编88201”,1.08,8.0);
添加(麦当劳);
麦当劳麦当劳1=新麦当劳(“1804 S主St,Roswell,NM,88203”,2.9,12.0);
添加(麦当劳1);
麦当劳麦当劳DSLC=新麦当劳(“4810梅萨格兰德,拉斯克鲁斯,北卡罗来纳州,88012”,143.2185.0);
添加(麦当劳DSLC);
麦当劳DSLC1=新麦当劳(“新泽西州拉斯克鲁斯沃尔顿大道571号,邮编88001”,147.62200.0);
添加(麦当劳DSLC1);
显示加油站(罗斯韦尔1号地铁);
显示加油站(罗斯韦尔2号地铁);
显示加油站(地铁LC1);
显示加油站(地铁LC2);
展示中心(麦当劳罗斯韦尔1);
展示中心(麦当劳罗斯韦尔2);
展示中心(麦当劳DSLC1);
展示中心(麦当劳);
}
私有void showFuelStops(字符串位置)引发IOException{
Geocoder Geocoder=新的Geocoder(这个,Locale.getDefault());
列出地址;
地址=地理编码器。getFromLocationName(位置,1);
如果(地址.size()>0){
BitmapDescriptor子路径BitmapDescriptor=BitmapDescriptorFactory.fromResource(R.drawable.fillingstation);
currentLat=addresses.get(0.getLatitude();
currentlong=addresses.get(0.getLongitude();
LatLng subLoc=新LatLng(当前LAT,当前LONG);
Marker fuelMarker=map.addMarker(新的MarkerOptions().position(subLoc).icon(subwayBitmapDescriptor).title(“地铁,”+位置));
}       
}
私有void显示避难所(字符串位置)引发IOException{
Geocoder Geocoder=新的Geocoder(这个,Locale.getDefault());
列出地址;
地址=地理编码器。getFromLocationName(位置,1);
如果(地址.size()>0){
BitmapDescriptor子路径BitmapDescriptor=BitmapDescriptorFactory.fromResource(R.drawable.Header);
双纬度=地址。get(0)。getLatitude();
double longitude=地址。get(0)。getLongitude();
LatLng subLoc=新LatLng(纬度、经度);
Marker hamburg=map.addMarker(新的MarkerOptions().position(subLoc).icon(subwayBitmapDescriptor).title(“麦当劳,+位置”);
}       
}
私有void showCurrentLocationOnMap(){
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
SupportMapFragment mf=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
map=mf.getMap();
//map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
LocationListener ll=新的Mylocationlistener();
布尔值isGPS=lm.isProviderEnabled(LocationManager.GPS\u提供程序);
如果(!isGPS){
意向意向=新意向(“android.location.GPS_ENABLED_CHANGE”);
intent.putExtra(“已启用”,真);
发送广播(意图);
}
lm.RequestLocationUpdate(LocationManager.GPS_提供程序,10000,10,ll);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
/
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >

     <fragment
         android:name="com.google.android.gms.maps.SupportMapFragment"
         android:id="@+id/map"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 </LinearLayout>
<fragment
         android:name="com.google.android.gms.maps.SupportMapFragment"
         android:id="@+id/map"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:visibility="gone" />
<EditText ...put stuff here... />
if (gpsIsOn)
{
    mapView.setVisibility(View.VISIBLE);
    editText.setVisibility(View.GONE);
}