获取当前位置的经纬度问题

Posted

技术标签:

【中文标题】获取当前位置的经纬度问题【英文标题】:Problem with getting latitude and longitude of current location 【发布时间】:2011-09-23 07:28:03 【问题描述】:

我想通过使用 gps 获取纬度和经度。我的代码运行成功,但运行速度太慢。 如何获得地理点(纬度和经度)最小持续时间(20秒)?以及如何在 30 秒后停止定位服务或 GPS?

 public void onCreate(Bundle savedInstanceState) 
    
        super.onCreate(savedInstanceState);

        //Log.i("WHERE","ShowOnMapActivity onCreate()");
        setContentView(R.layout.productlistmapview);

        button_back = (Button)findViewById(R.id.btn_back_map);
        button_back.setOnClickListener(this);


        map_view = (MapView) findViewById(R.id.mapview_productlist);
        LinearLayout zoom_layout = (LinearLayout)findViewById(R.id.zoom_map);  
        View zoomView = map_view.getZoomControls(); 

        zoom_layout.addView(zoomView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
        map_view.displayZoomControls(true);



        double str_latitude = XMLData.user_latitude;
        double str_longitude =XMLData.user_logitude;

        Log.i("str_latitude",str_latitude+"");
        Log.i("str_longitude",str_longitude+"");


        map_controller = map_view.getController();
;
        double coordinates[] = str_latitude, str_longitude;
        double lat = coordinates[0];
        double lng = coordinates[1];

        geo_point = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6));

        map_controller.animateTo(geo_point);
        map_controller.setZoom(9); 



         MapOverlay map_overlay = new MapOverlay();
         List<Overlay> list_of_overlays = map_view.getOverlays();
         list_of_overlays.clear();
         list_of_overlays.add(map_overlay);        

         map_view.invalidate();

    

    public void onClick(View v)
    
        switch(v.getId())
        
         case R.id.btn_back_map:
              Intent back_intent = new Intent(this,GroupPurchasingSelectProduct.class);
              startActivity(back_intent);
              break;    
        
    
    @Override
    protected boolean isRouteDisplayed() 
    
        Log.i("WHERE","ShowOnMapActivity isRouteDisplayed()");
        // TODO Auto-generated method stub
        return false;
    
    class MapOverlay extends com.google.android.maps.Overlay
    
        @Override
        public boolean draw(Canvas canvas, MapView mapView, 
        boolean shadow, long when) 
        
            super.draw(canvas, mapView, shadow);                   

            Point screen_points = new Point();
            mapView.getProjection().toPixels(geo_point, screen_points);


            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pushpin);            
            canvas.drawBitmap(bitmap, screen_points.x, screen_points.y-58, null);         
            return true;
        
     


【问题讨论】:

【参考方案1】:

检查this post。这应该可以帮助您了解如何更好地使用位置信息。

要在 30 秒后停止定位,您可以启动计时器并在该时间后通过调用停止 LocationService

 locationManager.stopUpdates(LocationListener).

【讨论】:

以上是关于获取当前位置的经纬度问题的主要内容,如果未能解决你的问题,请参考以下文章

获取当前位置的经纬度问题

如何使用JAVA获取我当前位置的经纬度

如何获取android移动设备的当前位置经纬度?

获取用户当前位置的经纬度

如何在 iOS 4.0/4.2 中获取当前位置的经纬度?

如何在IOS SDK 8.0中获取当前位置的经纬度