【问题标题】:Android: Setting user location on Google Map activityAndroid:在谷歌地图活动上设置用户位置
【发布时间】:2011-08-13 23:53:11
【问题描述】:

我刚刚在我的应用程序中创建了一个向用户显示地图的活动。我怎样才能把用户的位置放到这张地图上?这样做有点困惑,所以任何帮助都将不胜感激!

另外:当我设置地图时,我必须包括: MapView mapView = (MapView) findViewById(R.id.mapview); 为什么必须包含它,因为您还没有:setContentView(R.layout.main);? -- 听起来像个白痴问题,但这只是我想知道的问题!

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    我建议使用 MyLocationOverlay。这将获取用户的当前位置并通过蓝点将其显示在地图上。您可以通过以下方式完成此操作:

    List<Overlay> overlays = mMaps.getOverlays();
    overlays.clear();
    
    MyLocationOverlay myLocOverlay = new MyLocationOverlay(this, mMaps);
    myLocOverlay.enableMyLocation();
    overlays.add(myLocOverlay);
    myLocOverlay.runOnFirstFix(new Runnable() { public void run() {
        mMaps.getController().animateTo(myLocOverlay.getMyLocation());
    }});
    

    【讨论】:

      【解决方案2】:

      这是一个完成这项工作的示例代码。简短描述,您首先让 locationService 学习位置,然后使用 Criteria api 让系统根据您在 Criteria 中的设置选择最佳提供者,然后您获得提供者,从提供者请求位置更新并实现 LocationListener 接口,也可以获取缓存的最后一个位置调用 getLastKnownLocation 但我不会指望这可能会导致过时或空结果

              String contenxt = Context.LOCATION_SERVICE;
              locationManager = (LocationManager) getSystemService(contenxt);
      
              /*
               * trying to get the best provider
               * with given conditions
               */
              Criteria criteria = new Criteria();
              criteria.setAccuracy(Criteria.ACCURACY_FINE);
              criteria.setAltitudeRequired(false);
              criteria.setCostAllowed(true);
              criteria.setSpeedRequired(false);
              criteria.setBearingRequired(false);
              criteria.setPowerRequirement(Criteria.POWER_LOW);
      
              String provider = locationManager.getBestProvider(criteria, true);
              Log.d(GAL, provider);
      
              locationManager.requestLocationUpdates(provider, 3000, 30, locationListener);
              location = locationManager.getLastKnownLocation(provider);
      

      注意:不要忘记实现位置监听器

      要注意的答案:您不包括带有 findViewById(R.id.mapView) 的 mapView,它已经包含在您的 xml 中,因此在您的布局中。您只是参考了 mapView 以使用 setZoom、animateTo 等内置方法。

      【讨论】:

        猜你喜欢
        • 2014-02-18
        • 2012-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        相关资源
        最近更新 更多