Android Baidu cartographie plusieurs points de repère et événements de clic

Je n'ai pas beaucoup de bbs pour l'accès à la carte Baidu, il y en a beaucoup sur Internet, et vous pouvez lire beaucoup de documents officiels.

En plus de la configuration du fichier manifeste avant utilisation, il y a un autre point est d'initialiser, essayez de faire l'initialisation dans l'Application

la classe publique MyApp étend l'application {
    contexte statique public myApplication ;

    @Passer outre
    public void onCreate() {
        super.onCreate();
        monApplication = getApplicationContext();
        SDKInitializer.initialize(monApplication);
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

 Commencer avec le sujet d'aujourd'hui

Tout d'abord, la carte initiale, cette méthode peut être directement copiée, et d'autres réglages peuvent également être effectués dans cette méthode

BaiduMap mBaiduMap privé ;
Private LocationClient mLocationClient ;   

 privé void initMap() {
        //Définir l'icône de positionnement
// MyLocationConfiguration myLocationConfiguration = new //MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null, 00000000, 00000000);
        // Ne pas afficher le logo Baidu Map
        mapView.removeViewAt(1);
        mBaiduMap = mapView.getMap();

        mBaiduMap.setMyLocationEnabled(true);
// mBaiduMap.setMyLocationConfiguration(myLocationConfiguration);
        //Initialisation de la position
        mLocationClient = new LocationClient(this);


        // Définissez les paramètres liés à LocationClient via LocationClientOption
        Option LocationClientOption = new LocationClientOption();
        option.setOpenGps(true); // ouvre le GPS
        option.setCoorType("bd09ll"); // Définir le type de coordonnées
        option.setScanSpan(1000);


        //Définir locationOptionClient
        mLocationClient.setLocOption(option);

        // Enregistrer l'écouteur LocationListener
        mLocationClient.registerLocationListener(mListener);
        //Ouvre la couche de positionnement de la carte
        mLocationClient.start();

        setMaker();//définir le marqueur
    }

 Dans cette méthode pour définir le marqueur, et son suivi,

liste privée<LatLng> latLngList = new ArrayList<>();
Liste privée<OverlayOptions> optionsList = new ArrayList<>();

vide privé setMaker() {
    mBaiduMap.clear();//Effacer d'abord la couverture sur la carte
    //Définir les points de coordonnées Maker
    Point LatLng = nouveau LatLng(34.8972, 113.9117);
    latLngList.add(nouveau LatLng(34, 113));
    latLngList.add(nouveau LatLng(35, 113));
    latLngList.add(nouveau LatLng(36, 113));
    latLngList.add(nouveau LatLng(37, 113));
    latLngList.add(new LatLng(38, 113)); //Généralement, les données demandées par l'interface sont les données que je remplis moi-même
    //Construire l'icône Marqueur
    BitmapDescriptor bitmap = BitmapDescriptorFactory
            .fromResource(R.mipmap.icon_safe_type_one);
    //Construct MarkerOption pour ajouter un marqueur sur la carte
    pour (int je = 0; je < 5; je++) {
        Bundle mBundle = new Bundle(); //Utilisé pour passer des valeurs peut également identifier quel marqueur est cliqué
        mBundle.putString("title", "th" + i + "marker");
        mBundle.putDouble("lat", latLngList.get(i).latitude);
        mBundle.putDouble("lng", latLngList.get(i).longitude);

        Option OverlayOptions = nouveau MarkerOptions()
                .extraInfo(mBundle) //Le bundle ici est associé au fabricant
    // .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //Vous pouvez également utiliser le titre, mais l'invite officielle est obsolète
                .position(latLngList.get(i)) //Définir la latitude et la longitude
                .icon(bitmap);//Définir l'icône du marqueur
        optionsList.add(option);
    }

    //Ajouter un marqueur sur la carte et l'afficher
    // mBaiduMap.addOverlay(option); Ajouter un marqueur en utilisant ceci
    mBaiduMap.addOverlays(optionsList); // Ajouter une liste de marqueurs, utilisez ceci
    mBaiduMap.setOnMarkerClickListener(nouveau BaiduMap.OnMarkerClickListener() {
        @Passer outre
        public boolean onMarkerClick(Marqueur) {
            Bundle extraInfo = marker.getExtraInfo(); //Obtenez la valeur que vous avez remplie plus tôt grâce à cette méthode
            titre de chaîne = extraInfo.getString("titre");
            double lat = extraInfo.getDouble("lat");
            double lng = extraInfo.getDouble("lng");
            Toast.makeText(MainActivity.this, title + " ---- " + lat + "----" + lng, Toast.LENGTH_SHORT).show();
            retourner faux ;
        }
    });
}

 Jusqu'à présent, vous pouvez le lancer pour voir le résultat, je n'en montrerai pas plus ici,

 // Il y a des choses dans la documentation officielle de l'écouteur d'enregistrement, et vous pouvez les retrouver plus tard si vous enregistrez

privé BDAbstractLocationListener mListener = nouveau BDAbstractLocationListener() {
    @Passer outre
    public void onReceiveLocation (emplacement BDLocation) {
        // Après la destruction de mapView, il ne traite pas la position nouvellement reçue
        si (emplacement == null || mapView == null) {
            retour;
        }
        Log.e("fhxx", location.getLatitude() + " ------------" + location.getLongitude());

        MyLocationData locData = new MyLocationData.Builder()
                .accuracy(location.getRadius())
                // Définissez ici les informations de direction obtenues par le développeur, dans le sens des aiguilles d'une montre 0-360
                .direction(location.getDirection()).latitude(location.getLatitude())
                .longitude(location.getLongitude()).build();
        mBaiduMap.setMyLocationData(locData);

        si (estPremierLoc) {
            isFirstLoc = false ;
            LatLng ll = new LatLng(location.getLatitude()),
                    location.getLongitude());
            Constructeur MapStatus.Builder = new MapStatus.Builder();
            builder.target(ll).zoom(19.0f);
            mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
        }
    }
} ;

おすすめ

転載: blog.csdn.net/jiexiao4151/article/details/105688448