Мое местоположение изменяется на основе намерения, предоставленного другой деятельностью, и это работает хорошо, что показывает, что место, которое я хочу от LatitudeDegree
и LongitudeDegree
. Теперь я хочу показать его рядом с местами на выбор пользователя.например, если он вводит ATM, то рядом с ATM должен быть показан и т. д..
Это мой код, из которого я получил местоположение, и я пытался использовать place picker, но я не знаю, прав ли я и как я должен использовать.
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
private GoogleMap mMap;
private String mAirportName;
private int mLatitudeDegree;
private int mLongitudeDegree;
private int PLACE_PICKER_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// 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);
Intent newIntent = getIntent();
mAirportName = newIntent.getStringExtra("airportName");
mLatitudeDegree = newIntent.getIntExtra("latDegree", 200);
mLongitudeDegree = newIntent.getIntExtra("lngDegree", 201);
/*PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}*/
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker and move the camera
LatLng latLng = new LatLng(mLatitudeDegree, mLongitudeDegree);
mMap.addMarker(new MarkerOptions().position(latLng).title(mAirportName));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(5));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(data, this);
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
}
}
}
}
Если у вас есть lat lang близлежащих элементов, то использовать маркер и пометить их. Если у вас нет, то вам нужно купить такие API или создать свою собственную базу данных или попытаться найти, если есть открытые API доступны.
Если у вас есть другое место(например, магазин текстиля) местоположение долгота и широта, вы можете использовать этот метод, чтобы проверить расстояние между Пользователем и местоположением ;
вызовите этот метод, как показано ниже (возвращается в метрах)
Если вы хотите, теперь вы можете использовать условие if
В дополнение к вышесказанному ответ: если вы держите ваши ближайшие местыв списке или в базе данных, вы можете найти ближайшие места по следующему алгоритму:
затем отсортируйте список по distancefaktor и возьмите i.E. первые 10 пунктов.
Я видел очень поздно, вы работаете на карте google. В этом случае вы должны использовать Google api, чтобы получить близлежащие места:
https://developers.google.com/places/web-service/search?hl=de