Android 在谷歌地图上查找位置
我正试图在谷歌地图上找到我的位置。我的密码在这里。我已经在电话中运行了我的应用程序,但不幸的是它已停止。有什么问题吗?谢谢Android 在谷歌地图上查找位置,android,google-maps,location,Android,Google Maps,Location,我正试图在谷歌地图上找到我的位置。我的密码在这里。我已经在电话中运行了我的应用程序,但不幸的是它已停止。有什么问题吗?谢谢 public class MainActivity extends Activity implements LocationListener { private LatLng loc ; private LocationManager locationManager; private String provider; @Suppres
public class MainActivity extends Activity implements LocationListener {
private LatLng loc ;
private LocationManager locationManager;
private String provider;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
onLocationChanged(location);
}
GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
map.addMarker(new MarkerOptions().position(loc).title("Istanbul"));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(loc, 15));
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
}
@Override
public void onLocationChanged(Location location) {
double lat = (double) (location.getLatitude());
double lng = (double) (location.getLongitude());
loc = new LatLng(lat,lng);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
protected void onResume() {
super.onResume();
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
}
//试试这个
**main.xml**
公共类MyActivity扩展了FragmentActivity{
公共静态位置管理器mlocManager;
公共静态位置列表器;
谷歌地图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map=getMapView();
map.setMyLocationEnabled(true);
试一试{
mlocManager=(LocationManager)getSystemService(Activity.LOCATION\u服务);
mListner=新位置列表();
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
试一试{
试一试{
mlocManager.RequestLocationUpdate(LocationManager.PASSIVE_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
mlocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
试一试{
mlocManager.RequestLocationUpdate(LocationManager.NETWORK_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
}
});
}捕获(可丢弃的e){
e、 printStackTrace();
}
}
公共Google地图getMapView(){
FragmentManager fm=getSupportFragmentManager();
SupportMapFragment f=(SupportMapFragment)fm.findFragmentById(R.id.maps);
//从片段中获取GoogleMap对象
返回f.getExtendedMap();
}
公共无效设置映射标记(LatLng loc){
map.addMarker(新MarkerOptions().position(loc).title(“伊斯坦布尔”);
地图。移动摄像机(摄像机更新工厂。newLatLngZoom(位置15));
animateCamera(CameraUpdateFactory.zoomTo(10),2000年,空);
}
类LocationListner实现LocationListener{
@凌驾
已更改位置上的公共无效(位置){
setMapMarker(新LatLng(location.getLatitude(),location.getLatitude());
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
}
}
//试试这个
**main.xml**
公共类MyActivity扩展了FragmentActivity{
公共静态位置管理器mlocManager;
公共静态位置列表器;
谷歌地图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map=getMapView();
map.setMyLocationEnabled(true);
试一试{
mlocManager=(LocationManager)getSystemService(Activity.LOCATION\u服务);
mListner=新位置列表();
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
试一试{
试一试{
mlocManager.RequestLocationUpdate(LocationManager.PASSIVE_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
mlocManager.RequestLocationUpdate(LocationManager.GPS_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
试一试{
mlocManager.RequestLocationUpdate(LocationManager.NETWORK_提供程序,0,0,mListner);
}捕获(可丢弃的e){
e、 printStackTrace();
}
}
});
}捕获(可丢弃的e){
e、 printStackTrace();
}
}
公共Google地图getMapView(){
FragmentManager fm=getSupportFragmentManager();
SupportMapFragment f=(SupportMapFragment)fm.findFragmentById(R.id.maps);
//从片段中获取GoogleMap对象
返回f.getExtendedMap();
}
公共无效设置映射标记(LatLng loc){
map.addMarker(新MarkerOptions().position(loc).title(“伊斯坦布尔”);
地图。移动摄像机(摄像机更新工厂。newLatLngZoom(位置15));
animateCamera(CameraUpdateFactory.zoomTo(10),2000年,空);
}
类LocationListner实现LocationListener{
@凌驾
已更改位置上的公共无效(位置){
setMapMarker(新LatLng(location.getLatitude(),location.getLatitude());
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
}
}
在这一行:
map.addMarker(new MarkerOptions().position(loc).title("Istanbul"));
loc为空
另外,您不应该直接调用onLocationChanged(),它是一个回调。整个过程是事件驱动的,即当GPS或网络提供方法触发的位置时。在这一行:
map.addMarker(new MarkerOptions().position(loc).title("Istanbul"));
loc为空
另外,您不应该直接调用onLocationChanged(),它是一个回调。整个过程是事件驱动的,即当GPS或网络给你一个方法触发的位置时。我正试图通过这条线路给loc提供必要的参数,这些参数在onLocationChang中实现
map.addMarker(new MarkerOptions().position(loc).title("Istanbul"));