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())); } } };