Ich versuche, in der Nähe Orte wie Banken, Restaurants, Geldautomaten innerhalb der gezeichneten Bereich auf Google Maps in Android zu suchen

Ich versuche, in der Nähe Orte wie Banken, Restaurants, Geldautomaten innerhalb der gezeichneten Bereich auf Google Maps in Android zu suchen. Ich bekomme Koordinaten (Latitude und Longitude) in einem Array, aber ich bin nicht in der Lage, in der Nähe Orte von diesem Array zu finden. Kann mir jemand helfen? Ich habe versucht zu suchen, aber fand keine Ergebnisse. Große Hilfe wird geschätzt!

Dies ist meine gebuchte Vorwahl:

  • Wie mache ich die Zeitschrift window.location.href nicht auf Chrome auf Android
  • Kann ein NFC-Telefon als RFID-Tag fungieren, der in Abständen von mehr als 4 Zoll gelesen werden kann?
  • Fastlane / Release Automatisierung für Android
  • Wie zu verringern Radio Button Größe in Android
  • Hallo Welt Kernel Modul für Android & unbekannte Verlegung: 27 wenn insmod
  • Ein Ar-Array aus dem Benutzer erhalten, ohne einen String zu verwenden
  • public class MainActivity extends FragmentActivity implements OnTouchListener { private static final String TAG = "polygon"; private GoogleMap mGoogleMap; private View mMapShelterView; private GestureDetector mGestureDetector; private ArrayList<LatLng> mLatlngs = new ArrayList<LatLng>(); private PolylineOptions mPolylineOptions; private PolygonOptions mPolygonOptions; // flag to differentiate whether user is touching to draw or not private boolean mDrawFinished = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapShelterView = (View) findViewById(R.id.drawer_view); mGestureDetector = new GestureDetector(this, new GestureListener()); mMapShelterView.setOnTouchListener(this); initilizeMap(); //Contains(null); } private final class GestureListener extends SimpleOnGestureListener { @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } } /** * Ontouch event will draw poly line along the touch points * */ @Override public boolean onTouch(View v, MotionEvent event) { int X1 = (int) event.getX(); int Y1 = (int) event.getY(); Point point = new Point(); point.x = X1; point.y = Y1; LatLng firstGeoPoint = mGoogleMap.getProjection().fromScreenLocation( point); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: if (mDrawFinished) { X1 = (int) event.getX(); Y1 = (int) event.getY(); point = new Point(); point.x = X1; point.y = Y1; LatLng geoPoint = mGoogleMap.getProjection() .fromScreenLocation(point); mLatlngs.add(geoPoint); mPolylineOptions = new PolylineOptions(); mPolylineOptions.color(Color.RED); mPolylineOptions.width(3); mPolylineOptions.addAll(mLatlngs); mGoogleMap.addPolyline(mPolylineOptions); **Log.d(TAG, "Latitude and longitude: " + mLatlngs);** } break; case MotionEvent.ACTION_UP: Log.d(TAG, "Poinnts array size " + mLatlngs.size()); mLatlngs.add(firstGeoPoint); mGoogleMap.clear(); mPolylineOptions = null; mMapShelterView.setVisibility(View.GONE); mGoogleMap.getUiSettings().setZoomGesturesEnabled(true); mGoogleMap.getUiSettings().setAllGesturesEnabled(true); mPolygonOptions = new PolygonOptions(); mPolygonOptions.fillColor(0x5500ff00); // mPolygonOptions.fillColor(Color.LTGRAY); mPolygonOptions.strokeColor(Color.RED); mPolygonOptions.strokeWidth(5); mPolygonOptions.addAll(mLatlngs); mGoogleMap.addPolygon(mPolygonOptions); mDrawFinished = false; break; } return mGestureDetector.onTouchEvent(event); } /** * Setting up map * */ private void initilizeMap() { int status = GooglePlayServicesUtil .isGooglePlayServicesAvailable(getApplicationContext()); if (status == ConnectionResult.SUCCESS) { if (mGoogleMap == null) { mGoogleMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map)).getMap(); mGoogleMap.setMyLocationEnabled(true); } } else if (GooglePlayServicesUtil.isUserRecoverableError(status)) { // showErrorDialog(status); } else { Toast.makeText(this, "No Support for Google Play Service", Toast.LENGTH_LONG).show(); } } /** * Method gets called on tap of draw button, It prepares the screen to draw * the polygon * * @param view */ public void drawZone(View view) { mGoogleMap.clear(); mLatlngs.clear(); mPolylineOptions = null; mPolygonOptions = null; mDrawFinished = true; mMapShelterView.setVisibility(View.VISIBLE); mGoogleMap.getUiSettings().setScrollGesturesEnabled(false); } public synchronized boolean Contains(Location location) { boolean isInside = false; if (mLatlngs.size() > 0) { LatLng lastPoint = mLatlngs.get(mLatlngs.size() - 1); double x = location.getLongitude(); for (LatLng point : mLatlngs) { double x1 = lastPoint.longitude; double x2 = point.longitude; double dx = x2 - x1; if (Math.abs(dx) > 180.0) { if (x > 0) { while (x1 < 0) x1 += 360; while (x2 < 0) x2 += 360; } else { while (x1 > 0) x1 -= 360; while (x2 > 0) x2 -= 360; } dx = x2 - x1; } if ((x1 <= x && x2 > x) || (x1 >= x && x2 < x)) { double grad = (point.latitude - lastPoint.latitude) / dx; double intersectAtLat = lastPoint.latitude + ((x - x1) * grad); if (intersectAtLat > location.getLatitude()) isInside = !isInside; } lastPoint = point; } } return isInside; } 

    Ich habe Array auf mLatlang, jetzt will ich in der Nähe von Plätzen nach diesem Koordinaten nicht von meinem aktuellen Standort

  • Was ist der Unterschied zwischen Display.getRotation () und Display.getOrientation () abgesehen von der Tatsache, dass Display.getOrientation () abgelehnt ist?
  • Wie finde ich letzte Aktivität, aus der die aktuelle Aktivität in Android geöffnet ist?
  • Wie markiere ich das ausgewählte Item of Recycler View?
  • Stoppen und Starten von Musik bei eingehenden Anrufen
  • Android - Öffnen der E-Mail-Anwendung?
  • Portierung eines SDL 2.0 Spiels auf Android
  • 3 Solutions collect form web for “Ich versuche, in der Nähe Orte wie Banken, Restaurants, Geldautomaten innerhalb der gezeichneten Bereich auf Google Maps in Android zu suchen”

    Hier ist ein Arbeitscode, der die Places Web Service API verwendet, dies sollte Ihnen helfen, die Funktionalität, die Sie suchen.

    Allgemeine Dokumentation finden Sie hier .

    Unterstützte Typen von Platztypen finden Sie hier .

    Das folgende ist ein einfaches Beispiel. Zuerst generiere deine Abfragezeichenfolge für die API:

     public StringBuilder sbMethod() { //use your current location here double mLatitude = 37.77657; double mLongitude = -122.417506; StringBuilder sb = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); sb.append("location=" + mLatitude + "," + mLongitude); sb.append("&radius=5000"); sb.append("&types=" + "restaurant"); sb.append("&sensor=true"); sb.append("&key=******* YOUR API KEY****************"); Log.d("Map", "api: " + sb.toString()); return sb; } 

    Hier wird die AsyncTask verwendet, um die Places API abzufragen:

     private class PlacesTask extends AsyncTask<String, Integer, String> { String data = null; // Invoked by execute() method of this object @Override protected String doInBackground(String... url) { try { data = downloadUrl(url[0]); } catch (Exception e) { Log.d("Background Task", e.toString()); } return data; } // Executed after the complete execution of doInBackground() method @Override protected void onPostExecute(String result) { ParserTask parserTask = new ParserTask(); // Start parsing the Google places in JSON format // Invokes the "doInBackground()" method of the class ParserTask parserTask.execute(result); } } 

    Hier ist die Methode downloadURL() :

     private String downloadUrl(String strUrl) throws IOException { String data = ""; InputStream iStream = null; HttpURLConnection urlConnection = null; try { URL url = new URL(strUrl); // Creating an http connection to communicate with url urlConnection = (HttpURLConnection) url.openConnection(); // Connecting to url urlConnection.connect(); // Reading data from url iStream = urlConnection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(iStream)); StringBuffer sb = new StringBuffer(); String line = ""; while ((line = br.readLine()) != null) { sb.append(line); } data = sb.toString(); br.close(); } catch (Exception e) { Log.d("Exception while downloading url", e.toString()); } finally { iStream.close(); urlConnection.disconnect(); } return data; } 

    ParserTask zum Analysieren des JSON-Ergebnisses:

     private class ParserTask extends AsyncTask<String, Integer, List<HashMap<String, String>>> { JSONObject jObject; // Invoked by execute() method of this object @Override protected List<HashMap<String, String>> doInBackground(String... jsonData) { List<HashMap<String, String>> places = null; Place_JSON placeJson = new Place_JSON(); try { jObject = new JSONObject(jsonData[0]); places = placeJson.parse(jObject); } catch (Exception e) { Log.d("Exception", e.toString()); } return places; } // Executed after the complete execution of doInBackground() method @Override protected void onPostExecute(List<HashMap<String, String>> list) { Log.d("Map", "list size: " + list.size()); // Clears all the existing markers; mGoogleMap.clear(); for (int i = 0; i < list.size(); i++) { // Creating a marker MarkerOptions markerOptions = new MarkerOptions(); // Getting a place from the places list HashMap<String, String> hmPlace = list.get(i); // Getting latitude of the place double lat = Double.parseDouble(hmPlace.get("lat")); // Getting longitude of the place double lng = Double.parseDouble(hmPlace.get("lng")); // Getting name String name = hmPlace.get("place_name"); Log.d("Map", "place: " + name); // Getting vicinity String vicinity = hmPlace.get("vicinity"); LatLng latLng = new LatLng(lat, lng); // Setting the position for the marker markerOptions.position(latLng); markerOptions.title(name + " : " + vicinity); markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); // Placing a marker on the touched position Marker m = mGoogleMap.addMarker(markerOptions); } } } 

    Place_JSON Klasse, die in ParserTask :

     public class Place_JSON { /** * Receives a JSONObject and returns a list */ public List<HashMap<String, String>> parse(JSONObject jObject) { JSONArray jPlaces = null; try { /** Retrieves all the elements in the 'places' array */ jPlaces = jObject.getJSONArray("results"); } catch (JSONException e) { e.printStackTrace(); } /** Invoking getPlaces with the array of json object * where each json object represent a place */ return getPlaces(jPlaces); } private List<HashMap<String, String>> getPlaces(JSONArray jPlaces) { int placesCount = jPlaces.length(); List<HashMap<String, String>> placesList = new ArrayList<HashMap<String, String>>(); HashMap<String, String> place = null; /** Taking each place, parses and adds to list object */ for (int i = 0; i < placesCount; i++) { try { /** Call getPlace with place JSON object to parse the place */ place = getPlace((JSONObject) jPlaces.get(i)); placesList.add(place); } catch (JSONException e) { e.printStackTrace(); } } return placesList; } /** * Parsing the Place JSON object */ private HashMap<String, String> getPlace(JSONObject jPlace) { HashMap<String, String> place = new HashMap<String, String>(); String placeName = "-NA-"; String vicinity = "-NA-"; String latitude = ""; String longitude = ""; String reference = ""; try { // Extracting Place name, if available if (!jPlace.isNull("name")) { placeName = jPlace.getString("name"); } // Extracting Place Vicinity, if available if (!jPlace.isNull("vicinity")) { vicinity = jPlace.getString("vicinity"); } latitude = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lat"); longitude = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lng"); reference = jPlace.getString("reference"); place.put("place_name", placeName); place.put("vicinity", vicinity); place.put("lat", latitude); place.put("lng", longitude); place.put("reference", reference); } catch (JSONException e) { e.printStackTrace(); } return place; } } 

    Schließlich rufe den Prozess wie folgt auf:

      StringBuilder sbValue = new StringBuilder(sbMethod()); PlacesTask placesTask = new PlacesTask(); placesTask.execute(sbValue.toString()); 

    Ergebnis:

    Bildbeschreibung hier eingeben

    Zuerst das in deiner manifest.xml Datei verwenden

      <uses-permission android:name="in.wptrafficanalyzer.locationgeocodingv2.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API Key" /> 

    Dieser Code in deine Tätigkeit gelegt ..

     package in.wptrafficanalyzer.locationgeocodingv2; import java.io.IOException; import java.util.List; import android.location.Address; import android.location.Geocoder; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; public class MainActivity extends FragmentActivity { GoogleMap googleMap; MarkerOptions markerOptions; LatLng latLng; private AutoCompleteTextView actv_Serch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); // Getting a reference to the map googleMap = supportMapFragment.getMap(); // Getting reference to btn_find of the layout activity_main Button btn_find = (Button) findViewById(R.id.btn_find); // Defining button click event listener for the find button OnClickListener findClickListener = new OnClickListener() { @Override public void onClick(View v) { // Getting reference to EditText to get the user input location // EditText etLocation = (EditText) // findViewById(R.id.et_location); actv_Serch = (AutoCompleteTextView) findViewById(R.id.actv_Search); // Getting user input location String location = actv_Serch.getText().toString(); if (location != null && !location.equals("")) { new GeocoderTask().execute(location); } } }; // Setting button click event listener for the find button btn_find.setOnClickListener(findClickListener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } // An AsyncTask class for accessing the GeoCoding Web Service private class GeocoderTask extends AsyncTask<String, Void, List<Address>> { @Override protected List<Address> doInBackground(String... locationName) { // Creating an instance of Geocoder class Geocoder geocoder = new Geocoder(getBaseContext()); List<Address> addresses = null; try { // Getting a maximum of 3 Address that matches the input text addresses = geocoder.getFromLocationName(locationName[0], 3); } catch (IOException e) { e.printStackTrace(); } return addresses; } @Override protected void onPostExecute(List<Address> addresses) { if (addresses == null || addresses.size() == 0) { Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show(); } // Clears all the existing markers on the map googleMap.clear(); // Adding Markers on Google Map for each matching address for (int i = 0; i < addresses.size(); i++) { Address address = (Address) addresses.get(i); // Creating an instance of GeoPoint, to display in Google Map latLng = new LatLng(address.getLatitude(), address.getLongitude()); String addressText = String.format( "%s, %s", address.getMaxAddressLineIndex() > 0 ? address .getAddressLine(0) : "", address .getCountryName()); markerOptions = new MarkerOptions(); markerOptions.position(latLng); markerOptions.title(addressText); googleMap.addMarker(markerOptions); // Locate the first location if (i == 0) googleMap.animateCamera(CameraUpdateFactory .newLatLng(latLng)); } } } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.