Java 改造如何通过位置iside获取

Java 改造如何通过位置iside获取,java,android,api,retrofit,Java,Android,Api,Retrofit,我想展示使用我当前位置的附近餐馆。我正在使用改型,但我不知道如何将当前的纬度和经度传递到GET中。我用它来获取有关餐馆的信息。 我的地理编码 如果我在MainActivity中获得我的位置,那么如何将其传递到get中 请帮助我,这是我第一次使用改装和API 我的接口类-ZomatoApi.java package com.example.zomatoapi; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.h

我想展示使用我当前位置的附近餐馆。我正在使用改型,但我不知道如何将当前的纬度和经度传递到GET中。我用它来获取有关餐馆的信息。 我的地理编码

如果我在MainActivity中获得我的位置,那么如何将其传递到get中

请帮助我,这是我第一次使用改装和API

我的接口类-ZomatoApi.java

package com.example.zomatoapi;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Headers;

public interface ZomatoApi {

String baseUrl = "https://developers.zomato.com/api/v2.1/";

@Headers("user-key: 1d63821dbb228ee5d09e8c8f7cfe10c3")
@GET("geocode?lat=18.521428&lon=73.8544541")
   Call<CurrentCity> getRestaurant();

}
package com.example.zomatoapi;
2.电话;;
导入文件2.http.GET;
导入2.http.Headers;
公共接口ZomatoApi{
字符串baseUrl=”https://developers.zomato.com/api/v2.1/";
@标题(“用户密钥:1D63821DB228EE5D09E8C8F7CFE10C3”)
@GET(“地理代码?lat=18.521428&lon=73.8544541”)
调用getRestaurant();
}
main活动

package com.example.zomatoapi;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;

import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

private FusedLocationProviderClient mFusedLocationClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

    Retrofit retrofit = new Retrofit.Builder().baseUrl(ZomatoApi.baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    ZomatoApi zomatoApi = retrofit.create(ZomatoApi.class);

    final ListView listView = findViewById(R.id.restaurantList);

    final ArrayList<String> restaurantNames = new ArrayList<>();

    Call<CurrentCity> listCall = zomatoApi.getRestaurant();

    listCall.enqueue(new Callback<CurrentCity>() {
        @Override
        public void onResponse(Call<CurrentCity> call, Response<CurrentCity> response) {

            CurrentCity currentCity = response.body();

            List<NearbyRestaurant> nearbyRestaurants = currentCity.getNearbyRestaurants();

            for (NearbyRestaurant nearbyRestaurant : nearbyRestaurants) {
                Restaurant restaurant = nearbyRestaurant.getRestaurant();

                Log.i("heyy", restaurant.getName());

                restaurantNames.add(restaurant.getName());
            }

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, restaurantNames);
            listView.setAdapter(arrayAdapter);
        }

        @Override
        public void onFailure(Call<CurrentCity> call, Throwable t) {

        }
    });

}
package com.example.zomatoapi;
导入androidx.appcompat.app.appcompat活动;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入com.google.android.gms.location.FusedLocationProviderClient;
导入com.google.android.gms.location.LocationServices;
导入java.util.ArrayList;
导入java.util.List;
2.电话;;
2.回拨;
2.回应;;
进口改装2.改装;
进口改装2.converter.gson.GsonConverterFactory;
公共类MainActivity扩展了AppCompatActivity{
私有FusedLocationProviderClient mFusedLocationClient;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFusedLocationClient=LocationServices.getFusedLocationProviderClient(此);
改装改装=新建改装.Builder().baseUrl(ZomatoApi.baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
ZomatoApi ZomatoApi=reformation.create(ZomatoApi.class);
最终ListView ListView=findViewById(R.id.restaurantList);
最终ArrayList restaurantNames=新ArrayList();
调用listCall=zomatoApi.getRestaurant();
enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
CurrentCity CurrentCity=response.body();
List nearbyrestarants=currentCity.getnearbyrestarants();
for(nearbyrestarant nearbyrestarant:nearbyrestarants){
Restaurant Restaurant=nearbyRestaurant.getRestaurant();
Log.i(“heyy”,restaurant.getName());
添加(restaurantNames.add(restaurant.getName());
}
ArrayAdapter ArrayAdapter=新的ArrayAdapter(MainActivity.this,android.R.layout.simple\u list\u item\u 1,restaurantNames);
setAdapter(arrayAdapter);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
}

试试这个:

 @POST("nearestrestaurants?key=your_api_key")
// Call<MySnappedPoints> getNearestrestaurants();
Call<MySnappedPoints> getNearestRoad(@Query("points") String points);
@POST(“nearestrestarants?key=your\u api\u key”)
//调用getNearestrestaurants();
调用getNearestRoad(@Query(“points”)字符串points);
要获得这一点:

 String test = Double.toString(mGoogleMap.getCameraPosition().target.latitude) + "," + 
Double.toString(mGoogleMap.getCameraPosition().target.longitude);
Call<MySnappedPoints> call = retrofitClientMap.getNearestRoad(test);
String test=Double.toString(mGoogleMap.getCameraPosition().target.latitude)+“,”+
toString(mGoogleMap.getCameraPosition().target.longitude);
Call Call=reformationclientmap.getNearestRoad(测试);
试试这个:

 @POST("nearestrestaurants?key=your_api_key")
// Call<MySnappedPoints> getNearestrestaurants();
Call<MySnappedPoints> getNearestRoad(@Query("points") String points);
@POST(“nearestrestarants?key=your\u api\u key”)
//调用getNearestrestaurants();
调用getNearestRoad(@Query(“points”)字符串points);
要获得这一点:

 String test = Double.toString(mGoogleMap.getCameraPosition().target.latitude) + "," + 
Double.toString(mGoogleMap.getCameraPosition().target.longitude);
Call<MySnappedPoints> call = retrofitClientMap.getNearestRoad(test);
String test=Double.toString(mGoogleMap.getCameraPosition().target.latitude)+“,”+
toString(mGoogleMap.getCameraPosition().target.longitude);
Call Call=reformationclientmap.getNearestRoad(测试);

根据Zomato提供的文档,它接受lat/lng作为查询参数

试试下面的方法

@Headers("user-key: xxxxxxxxxxxxxxx")
    @GET("/geocode?")
        Call<CurrentCity> getRestaurant(@Query(“lat”) double lat, @Query(“lng”) double lng);
@Headers(“用户密钥:XXXXXXXXXXXXX”)
@获取(“/geocode?”)
调用getRestaurant(@Query(“lat”)double lat、@Query(“lng”)double lng);

根据Zomato提供的文档,它接受lat/lng作为查询参数

试试下面的方法

@Headers("user-key: xxxxxxxxxxxxxxx")
    @GET("/geocode?")
        Call<CurrentCity> getRestaurant(@Query(“lat”) double lat, @Query(“lng”) double lng);
@Headers(“用户密钥:XXXXXXXXXXXXX”)
@获取(“/geocode?”)
调用getRestaurant(@Query(“lat”)double lat、@Query(“lng”)double lng);

永远不要公开api密钥永远不要公开api密钥