新闻-手机-汽车-游戏-家电-家居-女人-摄影-站长-设计-网络-英语-开发-考试-范文-管理-营销-IT-商道-数码-电脑-文秘-美女-经验 Rss | 注册-登录
学网 > 问吧 > 所有相关 > 正文

Android地图定位的问题

2012/2/3 23:30:53 中国学网 跟贴 0 条 网友投稿

问题提出: 最近在做基于Google Api的个人地图,但是定位功能总是无法实现,后来在网上找 了一个代码,可以定位到我家了,但是我去另外一个市再找开这个软件时,发现定位还是我家,代码如下:
只有2个Activity,第一个是欢迎界面,不说了,主Activity代码如下(图片是模拟器的显示效果):
……
public class MapsActivity extends MapActivity {
        private MapView mapView;
        private MapController mapController;
        private GeoPoint p;
        private String provider;
        private LocationManager locationManager;
        MyLocationOverlay mlo;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        /**
         * 初始化位置服务
         * 初始化locationManager,并且找到最合适的LocationProvider
         */
        locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
final Location location=getCurrentLocation(locationManager);
/*----初始化地图显示和地图控制变量----*/
        mapView=(MapView)findViewById(R.id.mapview);
        mapController=mapView.getController();
mlo=new MyLocationOverlay(this, mapView);
        mlo.enableMyLocation();
        mlo.runOnFirstFix(new Runnable() {
                        @Override
                        public void run() {
                                mapController.animateTo(mlo.getMyLocation());
                                mapController.setZoom(16);
                        }
                });
        
        mapView.setClickable(true);
        mapView.setEnabled(true);
        mapView.setSatellite(false);
        mapView.setTraffic(false);
        mapView.setStreetView(false);
        mapView.setBuiltInZoomControls(true);  //设置缩放按钮可见
        
        mapController.setZoom(16);
        mapView.invalidate();
    }
/**
     * @return the current location
     */
    private Location getCurrentLocation(LocationManager locationManager) {
         Location location = locationManager.getLastKnownLocation("gps");
        if (null != location) { return location; }
        // getLastKnownLocation returns null if loc provider is not enabled
        location = new Location("gps");
        location.setLatitude(39);
        location.setLongitude(116);
        return location;
    }
/*---------------添加Menu控件------------------*/
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                menu.add(0, 1, 1, R.string.menu_help).setIcon(R.drawable.icon_help);
                menu.add(0, 2, 2, R.string.menu_exit).setIcon(R.drawable.icon_exit);
                return super.onCreateOptionsMenu(menu);
        }
        /*----------------Menu控件监听响应----------------------*/
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch(item.getItemId()){
                case 1: startActivity(new Intent(MapsActivity.this,aboutActivity.class));
                        break;
                case 2: this.finish();
                                break;
                }
                return super.onOptionsItemSelected(item);
        }
        
        @Override
        protected boolean isRouteDisplayed() {
                // TODO Auto-generated method stub
                return false;
        }

        @Override
        protected void onDestroy() {
                //locationManager.removeUpdates(locationListener);
                super.onDestroy();
        }
        
}
发现里面定位用的是Location location = locationManager.getLastKnownLocation("gps");
是不是这个是获取上次定位的位置,而不是我要的实时定位啊?????????
在线等 ,急! 中国学网其他用户对此信息的回答或评论:

===========================================================================================
cxlin007 回答于 2012-02-03 11:50 (11小时前)
Location location = locationManager.getLastKnownLocation("gps");这句是获取gps上次存储的gps信息,所以还是你家。你应该开启gps 的监听器不断的定位, locationManager.requestLocationUpdates
===========================================================================================
cxlin007 回答于 2012-02-03 11:58 (11小时前)
 locationManager = (LocationManager) mContext .getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, GpsLocationListerner)这个方法中 GpsLocationListerner为Gps监听程序。有位置更新时会回掉里面的方法
  • ·点此查看本文专栏报道
  • 关于 Android地图定位的问题

    点击登录 |

    网友评论仅供其表达个人看法,并不表明学网同意其观点或证实其描述。

    如何使用跟贴
    修改昵称 关闭窗口
    盖楼回复 关闭窗口
    点击登录 |
    发言 | 退出
    复制收藏 关闭窗口

    复制成功,按CTRL+V发送给好友、论坛或博客。 浏览器限制,请复制链接和标题给好友、论坛或博客。


    最新新闻

        
    新闻-手机-汽车-游戏-家电-家居-女人-音效-欣赏-硬件-企业-网吧-图标-矢量-源码-模板-软件-图库-书籍-笑话-书法-美食-字体-壁纸-问吧-分享
    About US - 关于我们 - 联系方法 - 招聘信息 - 本网声明 - 广告服务 - 网站地图
    中国学网版权所有
    ©2012