栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

定位用户当前位置并在Google地图中显示

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

定位用户当前位置并在Google地图中显示

我已经实现了您想要的相同的东西。我为您提供示例代码。在这种情况下,我在获取位置时也实现了ProgressDialog。

这是获取位置的起点。 我将此命名为AndroidLocationActivity。这是您的应用启动时开始的第一项活动。

String provider;    public double latitude, longitude = 0;    CurrentPositionTask getCurrentLocation;    Location currentLocation;    LocationListener locationListener;    LocationManager locationManager;    private long time=0;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        try { locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); setCriteria(); currentLocation = AndroidLocationActivity.this.locationManager.getLastKnownLocation(provider); if (currentLocation == null) {     currentLocation = new Location(provider); } time = currentLocation.getTime(); if (latitude == 0 && longitude == 0) {     latitude = currentLocation.getLatitude();     longitude = currentLocation.getLongitude();     } Toast.makeText(AndroidLocationActivity.this, String.valueOf(time), Toast.LENGTH_LONG).show();

如果时间不超过1分钟,请在此处设置时间,而不是不更新位置。

 if (time >= 100000) {     latitude = 0;     longitude = 0; }        } catch (NullPointerException e) { // TODO: handle exception System.out.println("Null"); e.printStackTrace();        }         catch (Exception e) { // TODO: handle exception e.printStackTrace();        }        runAsyncTask();        }    @Override    protected void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        locationManager.removeUpdates(locationListener);    }    public void setCriteria() {        Criteria criteria = new Criteria();        criteria.setAccuracy(Criteria.ACCURACY_FINE);        criteria.setAltitudeRequired(false);        criteria.setBearingRequired(false);        criteria.setCostAllowed(true);        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);        provider = locationManager.getBestProvider(criteria, true);        Toast.makeText(getApplicationContext(), "Provider - " + provider, Toast.LENGTH_SHORT).show();        if (provider == null) { provider = LocationManager.GPS_PROVIDER;        }    }    public void runAsyncTask() {        // TODO Auto-generated method stub        if (getCurrentLocation == null) { getCurrentLocation = new CurrentPositionTask(); }        if (getCurrentLocation != null) { getCurrentLocation.execute("Searching for Location"); }    }    public boolean checkConnection()    {        //ARE WE ConNECTED TO THE NET        ConnectivityManager conMgr = (ConnectivityManager) getSystemService (AndroidLocationActivity.CONNECTIVITY_SERVICE);        if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable()&& conMgr.getActiveNetworkInfo().isConnected()) { return true;        } else { return false;        }    }    private class CurrentPositionTask extends AsyncTask<String, Void, Void>    {        private ProgressDialog Dialog = new ProgressDialog(AndroidLocationActivity.this);        private boolean flag = true;        public CurrentPositionTask() { locationListener = new MyLocationListener();        }        @Override        protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); try {     if (checkConnection()) {         Dialog.setTitle("Loading");         Dialog.setMessage("Searching for Location");         Dialog.show();         locationManager.requestLocationUpdates(provider, 0, 0, locationListener);     }     else {         Toast.makeText(getApplicationContext(), "Internet is Not Available", Toast.LENGTH_LONG).show();     }     } catch (Exception e) {     // TODO: handle exception     e.printStackTrace(); }        }        @Override        protected Void doInBackground(String... params) { // TODO Auto-generated method stub while (flag) {     if (latitude !=0 && longitude != 0) {         flag=false;     } } return null;        }        @Override        protected void onPostExecute(Void result) { // TODO Auto-generated method stub Toast.makeText(AndroidLocationActivity.this, "Location Floats:- " + latitude + "," + longitude, Toast.LENGTH_LONG).show(); super.onPostExecute(result); if (Dialog != null && Dialog.isShowing()) {     Dialog.dismiss();     time=0;     Intent homeIntent = new Intent(AndroidLocationActivity.this.getApplicationContext(), HomeMenuActivity.class);

在此处设置经纬度并开始新的活动

 homeIntent.putExtra("lat", latitude);    homeIntent.putExtra("lng", longitude); startActivity(homeIntent); } locationManager.removeUpdates(locationListener);        }    }    class MyLocationListener implements LocationListener {        @Override        public void onLocationChanged(Location location) { // TODO Auto-generated method stub if (location != null) {     latitude = location.getLatitude();     longitude = location.getLongitude();     }        }        @Override        public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT).show();        }        @Override        public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();        }        @Override        public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub        }    }

这是我正在显示地图的功能。 这是HomeMenuActivity

public static Context context;onCreate(..) {    context = getApplicationContext(); // it will be used in Itemized Overlay     latitude = getIntent().getDoubleExtra("lat", 0);//get the lat & lng     longitude = getIntent().getDoubleExtra("lng", 0);}public void showMap() {    // TODO Auto-generated method stub    try {        geoPoint = new GeoPoint((int)(latitude * 1E6),(int)(longitude * 1E6));        mapview = (MapView)findViewById(R.id.mapview);        mapControll= mapview.getController();        mapview.setBuiltInZoomControls(true);        mapview.setStreetView(true);        mapview.setTraffic(true);        mapControll.setZoom(16);        mapControll.animateTo(geoPoint);        userPic = this.getResources().getDrawable(your pic....);        userPicOverlay = new MyItemizedOverlay(userPic);        OverlayItem overlayItem = new OverlayItem(geoPoint, "", null);        userPicOverlay.addOverlay(overlayItem);        mapview.getOverlays().add(userPicOverlay);        //Added symbols will be displayed when map is redrawn so force redraw now        mapview.postInvalidate();    } catch (Exception e) {        // TODO: handle exception        e.printStackTrace();    }}

ItemizedOverlay类

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {    private ArrayList<OverlayItem> myOverlays ;    public MyItemizedOverlay(Drawable defaultMarker) {        super(boundCenterBottom(defaultMarker));        myOverlays = new ArrayList<OverlayItem>();        populate();    }    public void addOverlay(OverlayItem overlay){        myOverlays.add(overlay);        populate();    }    @Override    protected OverlayItem createItem(int i) {        return myOverlays.get(i);    }    // Removes overlay item i    public void removeItem(int i){        myOverlays.remove(i);        populate();    }    // Returns present number of items in list    @Override    public int size() {        return myOverlays.size();    }    public void addOverlayItem(OverlayItem overlayItem) {        myOverlays.add(overlayItem);        populate();    }    public void addOverlayItem(int lat, int lon, String title) {        try { GeoPoint point = new GeoPoint(lat, lon); OverlayItem overlayItem = new OverlayItem(point, title, null); addOverlayItem(overlayItem);        } catch (Exception e) { // TODO: handle exception e.printStackTrace();        }    }    @Override    protected boolean onTap(int index) {        // TODO Auto-generated method stub        String title = myOverlays.get(index).getTitle();        Toast.makeText(HomeMenuActivity.context, title, Toast.LENGTH_LONG).show();        return super.onTap(index);    }}

希望这会有所帮助.....



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号