Comment ajouter de superposition dans google maps API v2 | Android |
J'ai récemment eu à travailler avec Google Maps API v2 sur Android et je suis tombé sur un autre obstacle. Je ne peux pas comprendre comment ajouter une superposition comme dans l'API v1 pour afficher un marqueur sur certains emplacements à l'aide de la lat et long. Je le veux dans la même ville à l'aide de long et lat. J'ai jusqu'à présent ajouté le code pour la position de départ de la carte, MAIS il ne fonctionne pas. Je suppose que je devrais écrire tout cela en java à la place du XML, mise en page, mais je ne sais pas comment aborder SupportMapFragment rien à faire.
C'est l'activité principale, je suis en utilisant SUPPORTMAPFRAGMENT au lieu de MapFragment et préfère ne pas basculer.
package com.example.maps;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;
public class Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
}
}
C'est XML
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="wrap_content"
android:layout_height="match_parent"
map:cameraBearing="112.5"
map:cameraTargetLat="-33.796923"
map:cameraTargetLng="150.922433"
map:cameraTilt="30"
map:cameraZoom="13"
map:mapType="normal"
map:uiCompass="false"
map:uiRotateGestures="true"
map:uiScrollGestures="false"
map:uiTiltGestures="true"
map:uiZoomControls="false"
map:uiZoomGestures="true" />
MODIFIER
Du code Java( j'ai exclu les importations et les colis, mais ils sont tous là. )
public class Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
GoogleMap googleMap;
googleMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
LatLng latLng = new LatLng(-33.796923, 150.922433);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("My Spot")
.snippet("This is my spot!")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
}
}
Nouvelles erreurs
01-02 01:16:53.333: D/AndroidRuntime(916): Shutting down VM
01-02 01:16:53.333: W/dalvikvm(916): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
01-02 01:16:53.363: E/AndroidRuntime(916): FATAL EXCEPTION: main
01-02 01:16:53.363: E/AndroidRuntime(916): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.maps/com.example.maps.Main}: java.lang.NullPointerException
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.os.Looper.loop(Looper.java:137)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-02 01:16:53.363: E/AndroidRuntime(916): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 01:16:53.363: E/AndroidRuntime(916): at java.lang.reflect.Method.invoke(Method.java:511)
01-02 01:16:53.363: E/AndroidRuntime(916): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-02 01:16:53.363: E/AndroidRuntime(916): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-02 01:16:53.363: E/AndroidRuntime(916): at dalvik.system.NativeStart.main(Native Method)
01-02 01:16:53.363: E/AndroidRuntime(916): Caused by: java.lang.NullPointerException
01-02 01:16:53.363: E/AndroidRuntime(916): at com.example.maps.Main.onCreate(Main.java:19)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.Activity.performCreate(Activity.java:5104)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-02 01:16:53.363: E/AndroidRuntime(916): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-02 01:16:53.363: E/AndroidRuntime(916): ... 11 more
OriginalL'auteur Malaka | 2013-01-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un marqueur dans la
onCreate
de votreFragmentActivity
.La solution de bout en bout ressemblerait à ceci pour la mise en page...
...l'Activité de ce genre...
Vous pouvez utiliser la OnMarkerClickListener, avec des informations supplémentaires ici.
Je l'ai essayé. Nouveau code de retour au post original/question. Il se bloque maintenant sur le lancement. Je vais travailler(recréer) demain lors de ma visite à mon école tech et je vais sur mon espace de travail principale de l'ordinateur à ce moment-là. Je fais la plupart de mon travail et il serait heureux si je peux avoir ce travail(HNE 1/2/2013 12H-4H). J'apprécie tous de votre aide jusqu'à présent.
Édité ma réponse à fournir un service plus complet de réponse sur ce que la solution de bout en bout.
Sur le latlng ligne que vous avez attribué un nom à la valeur. Je peux en faire plusieurs d'entre eux et d'ajouter de multiples marqueurs de droit? J'ai besoin d'afficher près de 20 marqueurs différents. Je m'excuse si je suis irritant. J'ai un délai bientôt et je suis très nouveau à cela.
OriginalL'auteur Aaron McIver
Vous ne savez pas si vous avez encore besoin d'un coup de main sur ce point, mais voici ce qui a fonctionné pour moi.
Puisque vous êtes le chargement du fragment dans un récipient, c'est prendre le temps de charger le fragment de composants dans la mémoire, et donc la carte est nulle. Pour remédier à cela, je l'ai attraper et de remplir la carte dans le onAttachedToWindow() la méthode de mon activité tout en créant et en ajoutant le fragment le conteneur dans la méthode onCreate. Cela donne le fragment de temps à charger depuis cet événement se déclenche lorsque la fenêtre a été chargé.
espère que cette aide.
Ce qui concerne,
DMan
OriginalL'auteur DMCApps
https://developers.google.com/maps/documentation/android-api/groundoverlay
OriginalL'auteur DoruChidean