【发布时间】:2014-01-23 05:07:39
【问题描述】:
如果可能,我不知道如何编写代码来选择网络提供商,或者如果网络不可用,则选择 GPS 提供商。 我怎样才能改变代码来得到这个。 这是我的第一个 android 应用程序,我尝试过,但没有成功。
package com.example.googlemapslbs;
import java.util.List;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import com.google.android.gms.maps.CameraUpdateFactory;
import android.location.Criteria;
import android.util.Log;
public class MainActivity extends Activity {
GoogleMap Map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// Load map
initilizeMap();
}
catch (Exception e) {
e.printStackTrace();
}
}
private void initilizeMap() {
if (Map == null) {
Map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
// map type normal (other possible choices: hybrid, terrain, satellite)
Map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// enable my-location
Map.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
//getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
if(location == null){
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double lat= location.getLatitude();
double lng = location.getLongitude();
LatLng ll = new LatLng(lat, lng);
Map.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, 18));
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {}
};
//Log.d("APpln", "well hello there >>"+location);
//location updates - requestLocationUpdates(provider, minTime, minDistance, listener)
locationManager.requestLocationUpdates(provider, 20000, 0, locationListener);
}else{
double lat= location.getLatitude();
double lng = location.getLongitude();
LatLng ll = new LatLng(lat, lng);
//modify the map's camera - zoom 18
Map.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, 18));
}
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
makeUseOfNewLocation(location);
}
private void makeUseOfNewLocation(Location location) {
double lat = location.getLatitude();
double lng = location.getLongitude();
LatLng ll = new LatLng(lat, lng);
Toast.makeText(getApplicationContext(), "Your Current Location \nLat: " + lat + "\nLng: " + lng, Toast.LENGTH_LONG).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(locationManager.getBestProvider(criteria, true), 0, 0, locationListener);
// check if map is created successfully or not
if (Map == null) {
Toast.makeText(getApplicationContext(),
"ups... can not create map", Toast.LENGTH_SHORT)
.show();
}
}
}
@Override
protected void onResume() {
super.onResume();
initilizeMap();
}
}
【问题讨论】:
-
在此处查看此示例androidhive.info/2012/07/android-gps-location-manager-tutorial 它仅使用 GPS,但您也可以类似地使用无线。
-
@Rohan Kandwal 感谢您的帮助,并按照建议的答案投票
-
不建议但应遵循。这将鼓励其他人回答您的问题并激励他们,因为这里没有人因帮助任何人而获得报酬。
标签: android google-maps