0

Я пытаюсь создать приложение для компании, у которой есть страница, показывающая ближайший магазин (так как в стране 36 магазинов) Я использую Карты Google API, и я не знаю, что делать это мой Java класс код:Как получить ближайший маркер с Google Maps api на студии android

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_contact_page); 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    LatLng Alexandra = new LatLng(-45.249167, 169.379722); 
    mMap.addMarker(new MarkerOptions().position(Alexandra).title("Bin Inn Alexandra")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(Alexandra)); 
}} 

и это мой XML-код игнорировать кнопки, где им будет поставить данные магазины:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:gravity="center"> 

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    tools:context=".MapsActivity" /> 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 

+0

Посмотрите здесь https://stackoverflow.com/questions/ 32284708/how-to-constant-detect-nearby-marker-locations-from-current-location-in-google – Chei

ответ

0

Есть несколько способов сделать это с точки зрения пользователя. У нас есть приложение, где мы показываем места для парковки, доступные для пользователя в его окрестностях. Допустим, в городе есть 100 парковочных мест. Мы решаем первоначальное масштабирование карты, где мы показываем только парковочные места, которые говорят в пределах 500 метров от его текущего положения. Когда и когда пользователь масштабируется, появляется все больше и больше пятен. Обратите внимание, что мы уже установили маркер на все парковочные места, просто чтобы они не показывались.

Теперь я не понимаю вашего заявления о проблеме, хотите ли вы показать только ближайший магазин на карте или что. В таком случае вам нужно либо использовать что-то вроде Google Distance Matrix API, которое берет начало координат и назначение lat и long и сообщает вам расстояние и продолжительность. Но если это для вас избыток, используйте что-то намного проще, чтобы рассчитать расстояние между двумя точками на карте и показать маркер для одного с наименьшим расстоянием от текущей позиции. Используйте это в качестве ссылки - Calculate distance between two points in google maps V3

+0

Так что я пытаюсь сделать, когда приложение обнаружило ближайший магазин, который он масштабирует и показывает магазины информация о маркере всплывает (информация: номер телефона, адрес, адрес электронной почты и т. д.), но все остальные маркеры могут быть видны, если клиент используя приложение, хочет посетить другой город в Новой Зеландии и хочет посмотреть, есть ли там Bin Inn. –

+0

О, и я использую Java, а не JavaScript (в вашей ссылке он использует JavaScript) –

0

использовать этот URL, чтобы понять код nearby places map api

А кнопка OnClick использовать эту функцию

private String getUrl(double latitude, double longitude) { 
    StringBuilder googlePlacesUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); 
    googlePlacesUrl.append("location=" + latitude + "," + longitude); 
    googlePlacesUrl.append("&radius=" + PROXIMITY_RADIUS); 
    googlePlacesUrl.append("&keyword=**companyname**"); 
    googlePlacesUrl.append("&sensor=true"); 
    googlePlacesUrl.append("&key=" + "API KEY"); 
    Log.d("getUrl", googlePlacesUrl.toString()); 
    return (googlePlacesUrl.toString()); 
}