Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在谷歌地图上查找位置_Android_Google Maps_Location - Fatal编程技术网

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"));