Wie, um den Fokus auf Marker in der google map in android
Ich möchte nur wissen, ob wir uns konzentrieren können auf zusätzlichen marker in der android-Anwendung oder nicht. Wenn ja, wie? oder gibt es eine alternative Möglichkeit, um diese Aufgabe zu erledigen.
können sagen, ich habe einen Markierer mit folgenden code :
map.addMarker(new MarkerOptions()
.title(title)
.snippet(snippet)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
.position(pos)
);
Fokussierung auf diese Markierung mit der maximalen zoom. und wenn ich noch 1 marker sollte es passen Zoomen(maximal mögliche zoom) in einer Weise, so dass die beiden marker zeigt auf einmal.
Dies ist, was ich bin versucht zu tun, aber es scheitert an der Linie map.moveCamera(cu);
.
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.CancelableCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
public class LocateUserInMap extends FragmentActivity {
private GoogleMap map;
private List<Marker> markers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_locate_user_in_map);
markers = new ArrayList<Marker>();
Intent intent = getIntent();
double frndLatVal = intent.getDoubleExtra("frndLatVal", 0);
double frndLonVal = intent.getDoubleExtra("frndLonVal", 0);
LatLng myloc = new LatLng(19.115486500000000000, 72.905544299999970000);
LatLng friendloc = new LatLng(frndLatVal, frndLonVal);
map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.google_map)).getMap();
addToMap(myloc, "My location", "From here 0M", "blue");
addToMap(friendloc, "Friend location", "From here 100M", "red");
showMarkersAtOnce();
}
private void showMarkersAtOnce() {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker m : markers) {
builder.include(m.getPosition());
}
LatLngBounds bounds = builder.build();
int padding = 0; //offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
map.moveCamera(cu);
/* map.getUiSettings().setScrollGesturesEnabled(false);
map.animateCamera(cu,
//CameraUpdateFactory.newLatLng(new LatLng(lat, lng))
new CancelableCallback()
{
@Override
public void onFinish()
{
map.getUiSettings().setScrollGesturesEnabled(true);
}
@Override
public void onCancel()
{
map.getUiSettings().setAllGesturesEnabled(true);
}
});*/
// map.animateCamera(CameraUpdateFactory.zoomBy(13));
}
private void addToMap(LatLng pos, String title, String snippet,
String markercolor) {
Marker localmarker = null;
if (markercolor == "blue")
{
localmarker = map.addMarker(new MarkerOptions()
.title(title)
.snippet(snippet)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
.position(pos));
} else if (markercolor == "red")
{
localmarker = map.addMarker(new MarkerOptions()
.title(title)
.snippet(snippet)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED))
.position(pos));
}
markers.add(localmarker);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.locate_user_in_map, menu);
return true;
}
}
und Logcat
08-04 13:23:32.975: W/EGL_emulation(764): eglSurfaceAttrib not implemented
08-04 13:23:42.787: D/dalvikvm(764): GC_CONCURRENT freed 169K, 3% free 11335K/11591K, paused 130ms+40ms, total 336ms
08-04 13:23:49.812: D/dalvikvm(764): GC_CONCURRENT freed 273K, 3% free 11497K/11847K, paused 121ms+124ms, total 480ms
08-04 13:23:49.972: E/ActivityThread(764): Failed to find provider info for com.google.settings
08-04 13:23:50.259: E/ActivityThread(764): Failed to find provider info for com.google.settings
08-04 13:23:54.223: D/dalvikvm(764): GC_CONCURRENT freed 262K, 3% free 11686K/12039K, paused 115ms+110ms, total 396ms
InformationsquelleAutor user2376920 | 2013-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie berechnen für alle Marken. So zu tun
Erhalten nun
CameraUpdateFactory
:Schließlich bewegen der Kamera auf eine Gruppe von Markierungen wie diese :
Oder wenn Sie möchten, eine animation:
kann auch geben Sie keine Referenz-link, der ich Folgen kann?
Ich glaube nicht, dass es irgendeine Methode, um alle Marker auf der Karte. Sie haben, um alle Marker lat long in Gebundener manuell. Oder Sie können fügen Sie Sie in einem Array an der Zeit, die Sie hinzufügen, Sie auf die Karte. Hier finden Sie einige Details über LatLongBounds developers.google.com/maps/documentation/android/reference/com/...
sein scheitern
map.moveCamera
Fehler Quelle nicht gefunden.Was ist der Fehler???
InformationsquelleAutor Vipul Purohit
Können Sie so etwas tun. Was Sie tun müssen, ist zu Durchlaufen, durch Ihren Marker und finden Sie die äußeren Koordinaten.
map.moveCamera
Fehler Quelle nicht gefunden.Poste deinen code, so können wir einen Blick auf Sie
posted in OP. Bitte werfen Sie einen Blick.
moveCamera
/animateCamera
funktioniert, wenn ichmap.animateCamera(CameraUpdateFactory.zoomBy(13));
Kannst du die stack-trace zu bitte
logcat gepostet wird.
InformationsquelleAutor Flaxie