首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android地理

Android地理
EN

Stack Overflow用户
提问于 2014-01-23 11:30:49
回答 2查看 3.9K关注 0票数 10

我已经通过了地学教程,我有疑问在脑海中。

是否需要持续监视用户的位置?

或者,当转换已经治愈时,添加Geofence的LocationClient会自动触发吗?

这似乎是一个显而易见的问题,但本教程从未提到任何有关从位置管理器请求位置更新的内容。

EN

回答 2

Stack Overflow用户

发布于 2019-08-05 13:25:49

地理位置要求您持续监视用户的位置吗?- NO,它不要求您监视位置。

只有要求

  1. 注册你的地理位置(一次行动)
  2. 位置适配器应该打开(系统级设置,如果禁用,应用程序可以触发对话框打开位置适配器)
  3. Google服务将自动触发操作,应用程序将接收回拨。

或者,当转换发生时,添加Geofence的LocationClient会自动触发吗?-,是,,它将被触发。确保设置了正确的过期时间戳,并且位置适配器位于上。应用程序不需要知道当前位置

可选

此外,你可以抓住正确的地理位置错误来知道,为什么你的地理围栏没有被触发:

GEOFENCE_NOT_AVAILABLE Geofence服务现在不可用。这通常是因为用户在设置>位置访问中关闭了位置访问。

恒定值: 1000

GEOFENCE_TOO_MANY_GEOFENCES你的应用程序已经注册了100多个地理位置。删除未使用的,然后添加新的地理位置。

恒定值: 1001

GEOFENCE_TOO_MANY_PENDING_INTENTS您已经为addGeofences(GoogleApiClient、GeofencingRequest、PendingIntent)调用提供了超过5个不同的PendingIntents。

恒定值: 1002

票数 3
EN

Stack Overflow用户

发布于 2014-01-23 11:36:54

代码语言:javascript
复制
        public class MainActivity extends FragmentActivity implements
          OnMarkerDragListener {

         private GoogleMap googleMap;
         private int distance;
         private SupportMapFragment mapFragment;

         @Override
         public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map));
          googleMap = mapFragment.getMap();
          googleMap.setOnMarkerDragListener(this);
          distance = 100;
          googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
            26.788707, 75.828108), 15));
          createGeofence(26.788707, 75.828108, distance, "CIRCLE", "GEOFENCE");
         }
         private void createGeofence(double latitude, double longitude, int radius,
           String geofenceType, String title) {

          Marker stopMarker = googleMap.addMarker(new MarkerOptions()
            .draggable(true)
            .position(new LatLng(latitude, longitude))
            .title(title)
            .icon(BitmapDescriptorFactory
              .fromResource(R.drawable.stop_marker)));

          googleMap.addCircle(new CircleOptions()
            .center(new LatLng(latitude, longitude)).radius(radius)
            .fillColor(Color.parseColor("#B2A9F6"))); 
         }
         @Override
         public void onMarkerDrag(Marker marker) {
         }
         @Override
         public void onMarkerDragEnd(Marker marker) {
          LatLng dragPosition = marker.getPosition();
          double dragLat = dragPosition.latitude;
          double dragLong = dragPosition.longitude;
          googleMap.clear();
          createGeofence(dragLat, dragLong, distance, "CIRCLE", "GEOFENCE");
          Toast.makeText(
            MainActivity.this,
            "onMarkerDragEnd dragLat :" + dragLat + " dragLong :"
              + dragLong, Toast.LENGTH_SHORT).show();
          Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong);

         }
         @Override
         public void onMarkerDragStart(Marker marker) {
         }



   main .xml 

    < ?xml version="1.0" encoding="utf-8"?>
     < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        < fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />
    < /RelativeLayout>
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21306901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档