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