解决方案 »

  1.   

    前提:如果你的GPS开了的话  那么可能是如下原因
    因为getLastKnownLocation方法获取的是上一次已知的位置
      但是你的apk运行的时候 从来没有获取位置数据 所以每次运行都获取不到数据 每次location都是为Null解决办法:使用new LocationListener()接口
    locationManager.requestLocationUpdates(locationprovider, 2000, 2, listener); //注册监听位置改变
    然后再 location=locationManager.getLastKnownLocation(locationprovider);
    就可以获取数据了
      

  2.   

       private void getLocation(){ // 获取位置管理服务
       
         LocationManager locationManager22 ;
            String serviceName = BaiduActivity.LOCATION_SERVICE;
            locationManager22 = (LocationManager)BaiduActivity.this.getSystemService(serviceName);      // 查找到服务信息
            
              String provider=LocationManager.GPS_PROVIDER;    //指定用GPS查询服务        
              //设置监听器,自动更新的最小时间为间隔2秒或最小位移变化超过2米
              locationManager22.requestLocationUpdates(provider, 2000, 2, ll);
       
           try{
           
            Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置        
            int lng = (int) (location1.getLongitude() * 1E6);
             Toast.makeText(this, lng, Toast.LENGTH_SHORT).show();
    //           center = new GeoPoint(lat, lng);
           }
           catch(Exception es)
           {
            Toast.makeText(this, "出现未知错误,获取当前位置不到", Toast.LENGTH_SHORT).show();
           }
       
        }
      
        
        //创建位置监听器
       // LocationListener 
        private LocationListener ll = new LocationListener(){
            //位置发生改变时调用       
            public void onLocationChanged(Location location) {  
                center = new GeoPoint((int) (location.getLatitude() * 1e6),
                        (int) (location.getLongitude() * 1e6));            
            }        //provider失效时调用         
            public void onProviderDisabled(String provider) {
                Log.d("Location", "onProviderDisabled");
                System.out.print("wwwww");
            }        //provider启用时调用       
            public void onProviderEnabled(String provider) {
                Log.d("Location", "onProviderEnabled");
                System.out.print("eeeee");
            }
           
            //状态改变时调用           
            public void onStatusChanged(String provider, int status, Bundle extras) {
                Log.d("Location", "onStatusChanged");
                System.out.print("rrrr");
            }
        };是这样吗?可是还是没用?是什么原因,我是刚接触的所以很笨。麻烦指点一下。 
      

  3.   

    你要注意了 你的位置在改变之后  
    但是你的Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置   
    只运行了一次 就是说 即使 public void onLocationChanged(Location location) {  
                center = new GeoPoint((int) (location.getLatitude() * 1e6),
                        (int) (location.getLongitude() * 1e6));            
            }
    执行了之后 但是你的location1 还是为空的 所以获取不到数据
    你可以在public void onLocationChanged(Location location) {  
               location1=location;
               //然后再来显示你的位置
            }
      

  4.   

    仅仅就是location1=location;吗?怎么还是没有用啊?
      

  5.   

    我按照百度给的demo写的一模一样,结果我这里报错,是一个jar出的问题,但是那个jar是百度自己提供的,并且在他们提供的demo里没问题,就是不知道为啥到我这里不行。
      

  6.   

    百度API的首页有那个定位的SDK,并且头DEMO示例的程序!
      

  7.   

    还有,如果是地图服务是要申请密匙的,如果只是定位SDK则不需要!
      

  8.   

    先自己随便赋值一个location初始化一下,后续定到位了,再更新显示,试试。
      

  9.   

    怎么我记得,最新版的定位不是这样的,??定位,只要你定位功能逻辑开了,,然后GPS硬件开了的话,它会自动去识别的
      

  10.   

    可以用百度定位 lib库定位。
      

  11.   

    谢谢大家了,找到原因了,原来是GPS定位太慢的原因,两分钟之后就会定位到了。不过,谢谢你们大家了!