Ich versuche, eine TextView
in der oberen linken Ecke von Google Maps anzuzeigen, die Benutzer informieren, wenn sie x Entfernungen von bestimmten Marker Punkt Standorten sind, d. H. "Sie sind in der Nähe von Standort A", aber nur die TextView
angezeigt, wenn innerhalb der Reichweite. Wenn sie sich außerhalb des Bereichs bewegen, wird TextView
nicht mehr angezeigt.Wie können Sie in der Nähe befindliche Markerpositionen vom aktuellen Standort in Google Maps Android aus ständig erkennen?
Ich habe gehört, dass das Google Places-API alle Standorte in der Nähe anzeigt. Ich möchte jedoch nur Orte in der Nähe der Markierungen anzeigen, die sich auf der Karte befinden, wenn x Entfernungen in der Nähe liegen.
Wie kann ich das erreichen? Muss ich weiterhin die Google Places-API verwenden?
meiner Klasse .java-:
private GoogleMap mMap;
private LatLng currLocation;
private static final LatLng POINTA = new LatLng(32.820193, -117.232568);
private static final LatLng POINTB = new LatLng(32.829129, -117.232204);
private static final LatLng POINTC = new LatLng(32.821114, -117.231534);
private static final LatLng POINTD = new LatLng(32.825157, -117.232003);
// Array to store hotspot coordinates
private ArrayList<LatLng> markerCoords = new ArrayList<LatLng>();
private static final int POINTS = 4;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
setUpMapIfNeeded();
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Create MenuInflater object to insert ActionBar buttons
MenuInflater inflater = getMenuInflater();
// Display the ActionBar buttons from .xml
inflater.inflate(R.menu.menu_map, menu);
return true;
}
@Override
protected void onResume()
{
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (mMap == null)
{
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null)
{
markerCoords.add(POINTA);
markerCoords.add(POINTB);
markerCoords.add(POINTC);
markerCoords.add(POINTD);
setUpMap();
}
}
}
private void setUpMap()
{
// Set My Location blue dot
mMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location myLocation = locationManager.getLastKnownLocation(provider);
if (myLocation != null)
{
double latitude = myLocation.getLatitude();
double longitude = myLocation.getLongitude();
currLocation = new LatLng(latitude, longitude);
}
for (int i = 0; i < POINTS; i++)
{
mMap.addMarker(new MarkerOptions()
.position(markerCoords.get(i))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.post_it_marker)));
}
}
map.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
map:cameraTargetLat="32.881416"
map:cameraTargetLng="-117.237428"
map:cameraZoom="15"
map:mapType="normal" />
</RelativeLayout>
jemand mich in die richtige Richtung zeigen kann? Dank
Hallo machen, haben Sie es geschafft, dieses Problem zu lösen, wie ich die gleiche Herausforderung bin? – Zack