2013-11-19 5 views
5

Привет, я попытался реализовать эти коды в своем приложении, но он не работает, я не знаю, где я ошибся.Arcgis: как получить местоположение устройства

в основном, когда я запускаю образец местоположения устройства. он не показывает мне, где мое текущее местоположение, и я не вижу никаких синих точек, которые напоминают текущее местоположение, на котором я нахожусь.

Единственное, что я вижу, это карта. просто выровнять карту.

я был бы очень благодарен, если кто-то, кто мог бы помочь мне о том, как получить текущее местоположение с синими точками, которые отображаются на карте ..

это мой MainActivity.class

public class HelloWorld extends Activity { 
MapView mMapView = null; 
ArcGISTiledMapServiceLayer tileLayer; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    // Retrieve the map and initial extent from XML layout 


     mMapView = (MapView) findViewById(R.id.map); 

     mMapView.addLayer(new ArcGISTiledMapServiceLayer(
      "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer")); 

     mMapView.setOnStatusChangedListener(new OnStatusChangedListener() { 

      public void onStatusChanged(Object source, STATUS status) { 
      if (source == mMapView && status == STATUS.INITIALIZED) { 
       LocationService ls = mMapView.getLocationService(); 
       ls.setAutoPan(false); 

       ls.start(); 
      } 

      } 

     }); 



    } 


protected void onPause() { 
    super.onPause(); 
    mMapView.pause(); 
    } 

@Override 
protected void onResume() { 
    super.onResume(); 
    mMapView.unpause(); 
} 

} 

ответ

2

Чтобы получить текущее местоположение устройства, вам необходимо использовать свой собственный менеджер местоположений или клиент местоположения, а затем вам нужно будет добавить эту точку на карте.

Ваша карта должна быть в MapFragment. Получите объект googleMap из фрагмента, а затем добавьте на него свою собственную голубую точку.

LocationManager locationManager = (LocationManager) getApplicationContext() 
      .getSystemService(Context.LOCATION_SERVICE); 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
      5000, 5, listener); 

} 

private LocationListener listener = new LocationListener() { 

    @Override 
    public void onLocationChanged(Location location) { 
     // TODO Auto-generated method stub 

     Log.e("Google", "Location Changed"); 

     if (location == null) 
      return; 
     Log.e("latitude", location.getLatitude() + ""); 
     Log.e("longitude", location.getLongitude() + ""); 

     } 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 
}; 

Приведенный выше код получает Вас место в onLocationChanged методе.

Примечание: я использовал GPS_PROVIDER, чтобы получить его. Есть и другие способы получить текущее местоположение.

+0

Я использую карту arcgis, я пробовал все виды кодов, но я все еще не могу получить текущее местоположение на карте arcgis. – FaridAvesko

+0

Прошу прощения, я ограничен моей информацией. Я отвечу на ваш вопрос, чтобы привлечь его внимание. –

+0

@FaridAvesko, вы нашли решение? , – Nikhil

4

это код, который рисует мое местоположение каждые 1 секунду через провайдера и GPS. первые декларируют переменные ДАВАЙТЕ:

private GraphicsLayer myGraphicalLayer; 
MapView mMapView; 
    ArcGISLocalTiledLayer baseLayer; 
private LocationManager mlocManager; 
    private LocationListener mlocListener; 

в OnCreate функции WE ЗВОНИТЕ LocationListener:

mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, mlocListener); 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, mlocListener); 
// loading the map 
     mMapView = (MapView) findViewById(R.id.localMap); 
     baseLayer = new ArcGISLocalTiledLayer(basemapurl); 
     mMapView.addLayer(baseLayer); 
// defining my position layer 
     myGraphicalLayer = new GraphicsLayer(); 

затем функцию обратить мое местоположение:

private void SetMyLocationPoint(final double x, final double y) { 
     PictureMarkerSymbol myPin = new PictureMarkerSymbol(getResources().getDrawable(
       R.drawable.mylocation_icon)); 

     Point wgspoint = new Point(x, y); 
     Point mapPoint = (Point) GeometryEngine.project(wgspoint, SpatialReference.create(4326), 
       mMapView.getSpatialReference()); 

     Graphic myPinGraphic = new Graphic(mapPoint, myPin); 

     try { 
      myGraphicalLayer.removeAll(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     myGraphicalLayer.addGraphic(myPinGraphic); 
     myGraphicalLayer.setVisible(true); 
     mMapView.addLayer(myGraphicalLayer); 

    } 

сделать внутренний класс, который реализует MyLocationListener, чтобы получить вы мгновенное местоположение и позвольте ему вызвать функцию с именем SetMyLocationPoint следующим образом:

Смежные вопросы