ZERO_RESULTS в разделе Получение типа места ветеринарной помощи и pet_store Android Студия - PullRequest
0 голосов
/ 18 апреля 2020

Я работал над этим поиском в Google Местах, и обычно я получаю хорошие результаты, но в последнее время я не могу получить ничего, кроме ZERO_RESULTS для veterinary_care и pet_store, но больница работает хорошо. Почему обратный вызов успеха go соответствует моему утверждению else с ZERO_RESULTS?

Результат ветеринара Результаты госпитализации

package com.example.doggeo;
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import java.io.IOException;
import java.util.List;
import com.google.android.gms.common.api.GoogleApiClient.*;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,
    ConnectionCallbacks,
    OnConnectionFailedListener,
    LocationListener{


private GoogleMap mMap;
private GoogleApiClient client;
private Marker currentLocationmMarker;
public static final int REQUEST_LOCATION_CODE = 99;
int PROXIMITY_RADIUS = 10000;
double latitude,longitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    {
        checkLocationPermission();

    }
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch(requestCode)
    {
        case REQUEST_LOCATION_CODE:
            if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) !=  PackageManager.PERMISSION_GRANTED)
                {
                    if(client == null)
                    {
                        buildGoogleApiClient();
                    }
                    mMap.setMyLocationEnabled(true);
                }
            }
            else
            {
                Toast.makeText(this,"Permission Denied" , Toast.LENGTH_LONG).show();
            }
    }
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        buildGoogleApiClient();
        mMap.setMyLocationEnabled(true);

    }
}


protected synchronized void buildGoogleApiClient() {
    client = new Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
    client.connect();

}

@Override
public void onLocationChanged(Location location) {

    latitude = location.getLatitude();
    longitude = location.getLongitude();
    if(currentLocationmMarker != null)
    {
        currentLocationmMarker.remove();

    }
    Log.d("lat = ",""+latitude);
    LatLng latLng = new LatLng(location.getLatitude() , location.getLongitude());
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title("Current Location");
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
    currentLocationmMarker = mMap.addMarker(markerOptions);
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    mMap.animateCamera(CameraUpdateFactory.zoomBy(10));

    if(client != null)
    {
        LocationServices.FusedLocationApi.removeLocationUpdates(client,this);
    }
}

public void onClick(View v)
{
    Object dataTransfer[] = new Object[2];
    GetNearbyPlacesData getNearbyPlacesData = new GetNearbyPlacesData();

    switch(v.getId())
    {
        case R.id.B_search:
            EditText tf_location =  findViewById(R.id.TF_location);
            String location = tf_location.getText().toString();
            List<Address> addressList;


            if(!location.equals(""))
            {
                Geocoder geocoder = new Geocoder(this);

                try {
                    addressList = geocoder.getFromLocationName(location, 5);

                    if(addressList != null)
                    {
                        for(int i = 0;i<addressList.size();i++)
                        {
                            LatLng latLng = new LatLng(addressList.get(i).getLatitude() , addressList.get(i).getLongitude());
                            MarkerOptions markerOptions = new MarkerOptions();
                            markerOptions.position(latLng);
                            markerOptions.title(location);
                            mMap.addMarker(markerOptions);
                            mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
                            mMap.animateCamera(CameraUpdateFactory.zoomTo(10));
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            break;
        case R.id.B_hospitals:
            mMap.clear();
            String hospital = "hospital";
            String url = getUrl(latitude, longitude, hospital);
            dataTransfer[0] = mMap;
            dataTransfer[1] = url;
            getNearbyPlacesData.execute(dataTransfer);
            Toast.makeText(MapsActivity.this, "Showing Nearby Hospitals", Toast.LENGTH_SHORT).show();
            break;


        case R.id.B_shops:
            mMap.clear();
            String pet_store = "pet_store";
            url = getUrl(latitude, longitude, pet_store);
            dataTransfer[0] = mMap;
            dataTransfer[1] = url;

            getNearbyPlacesData.execute(dataTransfer);
            Toast.makeText(MapsActivity.this, "Showing Nearby Pet Shops", Toast.LENGTH_SHORT).show();
            break;

        case R.id.B_vet:
            mMap.clear();
            String Vet = "veterinary_care";
            url = getUrl(latitude, longitude, Vet);
            dataTransfer[0] = mMap;
            dataTransfer[1] = url;
            getNearbyPlacesData.execute(dataTransfer);
            Toast.makeText(MapsActivity.this, "Showing Nearby Veterinarians", Toast.LENGTH_SHORT).show();
            break;
    }
}


private String getUrl(double latitude , double longitude , String nearbyPlace)
{

    StringBuilder googlePlaceUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
    googlePlaceUrl.append("location="+latitude+","+longitude);
    googlePlaceUrl.append("&radius="+PROXIMITY_RADIUS);
    googlePlaceUrl.append("&type="+nearbyPlace);
    googlePlaceUrl.append("&sensor=true");
    googlePlaceUrl.append("&key="+"");

    Log.d("MapsActivity", "url = "+googlePlaceUrl.toString());

    return googlePlaceUrl.toString();
}}

Есть ли у вас идея, что здесь не так?

1 Ответ

0 голосов
/ 28 апреля 2020

При проверке кажется, что поиск по соседству возвращает "ZERO_RESULTS" при указании veterinary_care и pet_store, потому что рядом с вашим местоположением нет открытых зоомагазинов и ветеринарных клиник. Обратите внимание, что места, помеченные как закрытые / временно закрытые, не будут отображаться в результатах поиска мест [1] (например, поиск рядом). Вы можете проверить, закрыто ли место временно или навсегда, с помощью сведений о месте [2] (если поле постоянного доступа закрыто).

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

...