Java 改造如何通过位置iside获取
我想展示使用我当前位置的附近餐馆。我正在使用改型,但我不知道如何将当前的纬度和经度传递到GET中。我用它来获取有关餐馆的信息。 我的地理编码 如果我在MainActivity中获得我的位置,那么如何将其传递到get中 请帮助我,这是我第一次使用改装和API 我的接口类-ZomatoApi.javaJava 改造如何通过位置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
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密钥