Android Baidu ordnet mehrere Markierungspunkte und Klickereignisse zu

Ich habe nicht viele BBS für den Zugriff auf Baidu-Karten, es gibt viele im Internet, und Sie können viele offizielle Dokumente lesen.

Neben der Konfiguration der Manifest-Datei vor der Verwendung gibt es einen weiteren Punkt zu initialisieren, versuchen Sie, die Initialisierung in der Anwendung durchzuführen

öffentliche Klasse MyApp erweitert Anwendung {
    öffentlich statisch Kontext myApplication;

    @Überschreiben
    öffentliche void onCreate() {
        super.onCreate();
        meineAnwendung = getApplicationContext();
        SDKInitializer.initialize(myApplication);
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

 Beginnen Sie mit dem heutigen Thema

Zunächst einmal kann die ursprüngliche Karte dieser Methode direkt kopiert werden, und weitere Einstellungen können auch in dieser Methode vorgenommen werden

private BaiduMap mBaiduMap;
private LocationClient mLocationClient;   

 private void initMap() {
        //Stellen Sie das Positionierungssymbol ein
// MyLocationConfiguration myLocationConfiguration = new //MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null, 00000000, 00000000);
        // Das Baidu Map Logo nicht anzeigen
        mapView.removeViewAt(1);
        mBaiduMap = mapView.getMap();

        mBaiduMap.setMyLocationEnabled(true);
// mBaiduMap.setMyLocationConfiguration (meineLocationConfiguration);
        //Initialisierung der Position
        mLocationClient = new LocationClient(this);


        //LocationClient-bezogene Parameter über LocationClientOption festlegen
        LocationClientOption-Option = neue LocationClientOption();
        option.setOpenGps(true); // GPS öffnen
        option.setCoorType("bd09ll"); // Lege den Koordinatentyp fest
        option.setScanSpan(1000);


        //LocationClientOption festlegen
        mLocationClient.setLocOption(Option);

        // LocationListener-Listener registrieren
        mLocationClient.registerLocationListener(mListener);
        //Öffnen Sie die Kartenpositionierungsebene
        mLocationClient.start();

        setMaker();//Marker setzen
    }

 Bei dieser Methode zum Setzen des Markers und seiner Überwachung

private List<LatLng> latLngList = new ArrayList<>();
private List<OverlayOptions> optionsList = new ArrayList<>();

private void setMaker() {
    mBaiduMap.clear();//Lösche zuerst die Abdeckung auf der Karte
    //Maker-Koordinatenpunkte definieren
    LatLng-Punkt = neuer LatLng (34,8972, 113,9117);
    latLngList.add (neues LatLng (34, 113));
    latLngList.add (neues LatLng (35, 113));
    latLngList.add (neues LatLng (36, 113));
    latLngList.add (neues LatLng (37, 113));
    latLngList.add(new LatLng(38, 113)); //Im Allgemeinen sind die von der Schnittstelle angeforderten Daten die Daten, die ich selbst ausfülle
    //Konstruieren Sie das Marker-Symbol
    BitmapDescriptor-Bitmap = BitmapDescriptorFactory
            .fromResource(R.mipmap.icon_safe_type_one);
    //MarkerOption zum Hinzufügen von Markern auf der Karte erstellen
    für (int i = 0; i < 5; i++) {
        Bundle mBundle = new Bundle(); //Wird verwendet, um Werte zu übergeben, kann auch erkennen, auf welche Markierung geklickt wird
        mBundle.putString("title", "th" + i + "marker");
        mBundle.putDouble("lat", latLngList.get(i).latitude);
        mBundle.putDouble("lng", latLngList.get(i).longitude);

        OverlayOptions-Option = neue MarkerOptions()
                .extraInfo(mBundle) //Das Bundle hier ist dem Hersteller zugeordnet
    // .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //Sie können auch Titel verwenden, aber die offizielle Eingabeaufforderung ist veraltet
                .position(latLngList.get(i)) //Breiten- und Längengrad festlegen
                .icon(bitmap);//Markierungssymbol setzen
        optionsList.add (Option);
    }

    //Füge einen Marker auf der Karte hinzu und zeige ihn an
    // mBaiduMap.addOverlay(option); Fügen Sie hiermit eine Markierung hinzu
    mBaiduMap.addOverlays(optionsList); //Markierungsliste hinzufügen, verwenden Sie diese
    mBaiduMap.setOnMarkerClickListener (neues BaiduMap.OnMarkerClickListener() {
        @Überschreiben
        public boolean onMarkerClick(Markermarker) {
            Bundle extraInfo = marker.getExtraInfo(); //Erhält den Wert, den Sie zuvor durch diese Methode gefüllt haben
            Zeichenfolge Titel = extraInfo.getString("Titel");
            double lat = extraInfo.getDouble("lat");
            double lng = extraInfo.getDouble("lng");
            Toast.makeText(MainActivity.this, title + " ---- " + lat + "----" + lng, Toast.LENGTH_SHORT).show();
            falsch zurückgeben;
        }
    });
}

 Bisher können Sie es ausführen, um das Ergebnis zu sehen, ich werde hier nicht mehr zeigen,

 //Es gibt Dinge in der offiziellen Dokumentation des Registrierungs-Listeners, und Sie können sie später finden, wenn Sie speichern

privater BDAbstractLocationListener mlListener = neuer BDAbstractLocationListener() {
    @Überschreiben
    public void onReceiveLocation(BDLocation-Standort) {
        //Nachdem die mapView zerstört wurde, verarbeitet sie die neu empfangene Position nicht
        if (location == null || mapView == null) {
            zurückkehren;
        }
        Log.e("fhxx", location.getLatitude() + " ------------" + location.getLongitude());

        MyLocationData locData = new MyLocationData.Builder()
                .accuracy(location.getRadius())
                // Stellen Sie hier die vom Entwickler erhaltenen Richtungsinformationen ein, im Uhrzeigersinn 0-360
                .direction(location.getDirection()).latitude(location.getLatitude())
                .longitude(location.getLongitude()).build();
        mBaiduMap.setMyLocationData(locData);

        if (isFirstLoc) {
            isFirstLoc = falsch;
            LatLng ll = new LatLng(location.getLatitude(),
                    location.getLongitude());
            MapStatus.Builder-Builder = new MapStatus.Builder();
            builder.target(ll).zoom(19.0f);
            mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
        }
    }
};

Acho que você gosta

Origin blog.csdn.net/jiexiao4151/article/details/105688448
Recomendado
Clasificación