Daha çox

Mövqeyim tıklandıqda bildiriş göstərin


Android-də Esri ArcGIS sdk istifadə edirəm və aşağıdakıları etməyə çalışıram:

  • Mənim mövqeyimə baxın

  • Mənim mövqeyim tıklandıqda, bir bildiriş göstərin

İndiyə qədər a istifadə edərək birincisini bitirməkdə xoşbəxt oldumyer xidmətisinif

Mən də bildirişi yaratdım və sınaqdan keçirdim, yaxşıdır, amma sualım budur ki, xəritəni xəritədə başqa bir yerə yox, yalnız mövqeyimi vurduğumda göstəricini göstərim?

Budur kodum:

paketi com.appzgate.locator; idxal java.util.HashMap; idxal java.util.Map; idxal android.app.Activity; idxal android.graphics.Color; idxal android.location.Location; idxal android.location.LocationListener; idxal android.os.Bundle; idxal android.util.Log; idxal android.view.LayoutInflater; android.view.ViewGroup idxal; idxal android.widget.TextView; idxal android.widget.Toast; com.esri.android.map.Callout idxal; com.esri.android.map.GraphicsLayer idxal etmək; com.esri.android.map.LocationService idxal etmək; com.esri.android.map.MapView idxal etmək; com.esri.android.map.bing.BingMapsLayer idxal etmək; com.esri.android.map.bing.BingMapsLayer.MapStyle idxal; com.esri.android.map.event.OnSingleTapListener idxal etmək; com.esri.android.toolkit.map.MapViewHelper idxal etmək; idxal com.esri.core.geometry.GeometryEngine; idxal com.esri.core.geometry.Point; idxal com.esri.core.geometry.SpatialReference; idxal com.esri.core.map.Graphic; com.esri.core.symbol.SimpleMarkerSymbol idxal etmək; public class PlacelocatorActivity Fəaliyyəti genişləndirir {MapView mMapView; BingMapsLayer bing; GraphicsLayer locationLayer; LocationService loc; xüsusi Callout m_callout; Şəxsi int m_calloutStyle; xüsusi ViewGroup calloutContent; Qrafik qrafik; Point mLocation = null, p, mapPoint; final SpatialReference wm = SpatialReference.create (102100); final SpatialReference egs = SpatialReference.create (4326); MapViewHelper mvHelper; / ** Fəaliyyət ilk dəfə yaradıldıqda çağırılır. * / @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); mMapView = (MapView) findViewById (R.id.map); mLocation = yeni Nöqtə (); mMapView.enableWrapAround (true); mvHelper = yeni MapViewHelper (mMapView); m_calloutStyle = R.xml.identify_calloutstyle; LayoutInflater inflater = getLayoutInflater (); m_callout = mMapView.getCallout (); // Səsləndirmə üçün düzeni // layout-> ident_callout_content.xml calloutContent = (ViewGroup) inflater.inflate (R.layout.identify_callout_content, null); m_callout.setContent (calloutContent); bing = yeni BingMapsLayer ("ArUDBy4hjDCywOK-GVofer_1U6GG3GPWxaZ8zp68o01W-nQdiLgcV9MtvGEehxn5", MapStyle.AERIAL); mMapView.addLayer (bing); loc = mMapView.getLocationService (); loc.setLocationListener (yeni MyLocationListener ()); loc.start (); loc.setAutoPan (yalan); mLocation = loc.getPoint (); locationLayer = yeni GraphicsLayer (); mMapView.addLayer (locationLayer); mMapView.setOnSingleTapListener (yeni OnSingleTapListener () {@Override public void onSingleTap (float x, float y) {// TODO Avtomatik olaraq yaradılan metod stub // mapPoint = mMapView.toMapPoint (x, y); defineLocation (x, y)); }}); } etibarsız identifikasiyaLocation (float x, float y) {// Göstəricini gizlədin, əgər əvvəlki tapdan gələn səsləndirmə hələ (m_callout.isShowing ()) {m_callout.hide (); } Point mapPoint = mMapView.toMapPoint (x, y); checkGraphic (); əgər (qrafik! = boş) {ShowCallout (m_callout, qrafik, mLocation); }} xüsusi boşluq checkGraphic () {// TODO Avtomatik olaraq yaradılan metod stub SimpleMarkerSymbol sms = yeni SimpleMarkerSymbol (Color.GREEN, 25, SimpleMarkerSymbol.STYLE.CROSS); Xəritə hm = yeni HashMap(); hm.put ("AD", "Amman"); hm.put ("ÖLKƏ", "İordaniya"); qrafik = yeni Qrafik (mLocation, sms, hm); locationLayer.addGraphic (qrafik); } @Override qorunan boşluq onDestroy () {super.onDestroy (); } @Override qorunan boşluq onPause () {super.onPause (); mMapView.pause (); } @Override qorunan boşluq onResume () {super.onResume (); mMapView.unpause (); } xüsusi sinif MyLocationListener LocationListener tətbiq edir {public MyLocationListener () {super (); } / ** * Yer dəyişirsə, cari yerimizi yeniləyin. * İlk dəfə tapılsa, 20 * / public void onLocationChanged (Location loc) {if (loc == null) return qətnaməsi ilə mövcud vəziyyətimizə yaxınlaşın; boolean zoomToMe = (mLocation == sıfır)? doğru yalan; mLocation = yeni Nöqtə (loc.getLongitude (), loc.getLatitude ()); əgər (zoomToMe) {p = (Nöqtə) GeometryEngine.project (mLocation, egs, wm); // qrafik = yeni Qrafik ((Həndəsə) p, (Symbol) sms, hm); // locationLayer.addGraphic (qrafik); mMapView.zoomToResolution (s, 20.0); }} public void onProviderDisabled (String provider) {Toast.makeText (getApplicationContext (), "GPS Disabled", Toast.LENGTH_SHORT) .show (); } public void onProviderEnabled (String provider) {Toast.makeText (getApplicationContext (), "GPS Enabled", Toast.LENGTH_SHORT) .show (); } public void onStatusChanged (String provider, int status, Bundle Əlavələri) {}} Showoid ​​Show (Callout calloutView, Graphic graphic, Point mapPoint) xüsusi boşluq {Log.v ("çağırış", "səsləndirmədə"); // Graphic String cityName = (String) graphic.getAttributeValue ("NAME") üçün atributların dəyərlərini əldə edin; String countryName = (String) graphic.getAttributeValue ("COUNTRY"); // String cityPopulationValue = ((Double) qrafik // .getAttributeValue ("POPULATION")). ToString (); Log.v ("zəng et", "indiyə qədər çox yaxşı"); // CalloutView.setCoordinates (vəzifə nöqtəsi) xüsusiyyətlərini təyin edin; calloutView.setStyle (m_calloutStyle); calloutView.setMaxWidth (325); // Nəticələri göstərmək üçün sətir qurun StringBuilder cityCountryName = yeni StringBuilder (); cityCountryName.append (cityName); cityCountryName.append (","); cityCountryName.append (countryName); TextView calloutTextLine1 = (TextView) findViewById (R.id.citycountry); calloutTextLine1.setText (cityCountryName); // Nəticələri göstərmək üçün sətir qurun StringBuilder cityPopulation = new StringBuilder (); cityPopulation.append ("Əhali:"); // cityPopulation.append (cityPopulationValue); // TextView calloutTextLine2 = (TextView) findViewById (R.id.population); // calloutTextLine2.setText (cityPopulation); calloutView.setContent (calloutContent); calloutView.show (); }}

Aşağıdakı kodu əlavə edərək bunu təkbaşına başa düşdüm:

int loaded = mvHelper.addMarkerGraphic (loc.getLatitude (), loc.getLongitude (), "Jordan", "Amman", null, icon, false, 0);


Videoya baxın: Internet - tekst en afbeeldingen kopieren van internet naar (Oktyabr 2021).