Wie die Umsetzung der aktuellen Lage Blaue Symbol in Hier Anzeigen

Arbeite ich mit der Hier Map SDK und ich brauche die Karte ein blaues Symbol mit Kreis-animation für die aktuelle Position wie im Bild.

Wie die Umsetzung der aktuellen Lage Blaue Symbol in Hier Anzeigen

Kann mir jemand sagen, wie es zu tun.

Nun habe ich code ab und stellt die Symbol-nur die blauen Punkt. Ich weiß nicht, wie hinzufügen von Kreis-animation, um es.

Beachten Sie, dass die mMap Referenz ist ein Map-Objekt aus dem Android-SDK.

 mMap.getPositionIndicator().setVisible(true);
                    mMap.getPositionIndicator().setZIndex(0);
                    mMap.setZoomLevel(15);
                    mMap.getPositionIndicator().setAccuracyIndicatorVisible(true);
                    mMap.getPositionIndicator().setMarker(createImage(R.drawable.ic_location_dot));
InformationsquelleAutor djk | 2017-06-27



8 Replies
  1. 1

    Können Sie Steuern, die HIER Maps-aktuelle Position-Symbol durch com.here.android.mpa.mapping.PositionIndicator Klasse.

    Its-Instanz gehalten wird, die in com.here.android.mpa.mapping.MapView werden könnten, eingewickelt in ein fragment wie com.here.android.mpa.mapping.SupportMapFragment.

    Beispiele:

    mapFragment.getPositionIndicator().setVisible(true)
    mapView.getPositionIndicator().setAccuracyIndicatorVisible(true)
  2. 0

    Für javascript, die Sie verwenden können

    map.addObject(new H.map.Circle(
    //The central point of the circle
    {lat:28.6071, lng:77.2127},
    //The radius of the circle in meters
    1000,
    {
      style: {
        strokeColor: 'rgba(55, 85, 170, 0.6)', //Color of the perimeter
        lineWidth: 2,
        fillColor: 'rgba(0, 128, 0, 0.1)'  //Color of the circle
      }
    }
    ));

    Sollte es eine ähnliche Implementierung für android.

  3. 0

    Versuchen, diese:

    mMap.setMyLocationEnabled(true);

    Es aktiviert oder deaktiviert den mein-Standort-Ebene.
    Während aktiviert und die Position verfügbar ist, wird der mein-Standort-Schicht kontinuierlich ein Indiz für einen Benutzer der aktuellen Position und Haltung, und zeigt die UI-Steuerelemente, mit denen ein Benutzer interagieren mit Ihrem Standort (zum Beispiel, aktivieren oder deaktivieren Sie die Kamera-tracking von Ihrem Standort und Lager).

    Viel besser, wenn Sie legen Sie es unter:

    @Override
    public void onMapReady(GoogleMap googleMap) {
    
    }
  4. 0

    Ich getestet habe diesen code erfolgreich und rufen addPulsatingEffect(Standort userLocation) – Methode, mit der Anwender die aktuelle Lage.

    private Circle lastUserCircle;
    private static final long PULSE_DURATION = 2000;
    private static final float RADIUS = 200.0f;
    private ValueAnimator lastPulseAnimator;
    
    private void addPulsatingEffect(Location userLocation){
    
    final LatLng userLatlng = new LatLng(userLocation.getLatitude(), userLocation.getLongitude());
    
    if(lastPulseAnimator != null){
        lastPulseAnimator.cancel();
    }
    
    if(lastUserCircle != null) {
        lastUserCircle.setCenter(userLatlng);
    }
    
    lastPulseAnimator = valueAnimate(RADIUS, new ValueAnimator.AnimatorUpdateListener() {
    
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
    
            if(lastUserCircle != null)
                lastUserCircle.setRadius((Float) animation.getAnimatedValue());
            else {
                lastUserCircle = mMap.addCircle(new CircleOptions()
                        .center(userLatlng)
                        .radius((Float) animation.getAnimatedValue())
                        .strokeColor(Color.BLUE)
                        .strokeWidth(4.0f));
            }
        }
    });
    }
    
    protected ValueAnimator valueAnimate(float radius, ValueAnimator.AnimatorUpdateListener updateListener){
    
    ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, radius);
    valueAnimator.setDuration(PULSE_DURATION);
    valueAnimator.addUpdateListener(updateListener);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    
    valueAnimator.start();
    return valueAnimator;
    }
    • Ich konnte nicht finden viele der Klassen, wie Kreis, LatLng, addCircle Methode für Karte etc. ich bin mit hier Karte und mMap ist Map-Objekt für mich.
    • ja bro, „mMap“ ist ein Objekt der „com.google.android.gms.maps.GoogleMap“, „Kreis“ ist ein Objekt der „com.google.android.gms.maps.Modell.Kreis“, „LatLng“ – Klasse ist ein Objekt der „com.google.android.gms.maps.Modell.LatLng“. Versuchen Sie es mit dem Import dieser Klassen. Es funktioniert auf jeden Fall…
    • Ich arbeite Hier mit der Map SDK. das ist, warum dies nicht funktioniert für mich
  5. 0

    Für diesen Anwendungsfall ist es besser, zu schreiben, Ihre eigene position-Indikator.

    Drei Dinge zu tun:
    1: Registrieren Sie sich für PositioningManager Rückrufe, von welchem Server die aktualisierte position an Ihrem code.
    2: Erstellen Sie ein MapMarker mit Ihrem gewünschten Bild und fügen Sie es auf der Karte.
    4: Erstellen Sie eine MapCircle mit die gewünschte Farbe aus und fügen Sie es auf der Karte. Der radius für den Kreis, sollte festgelegt werden, um die Genauigkeit parameter der Positionierung-Manager-Rückruf.

    Die Logik, dies zu tun ist, aktualisieren Sie den radius der MapCircle, sowie update der GeoCoordinate sowohl der MapMarker und MapCircle, wenn eine neue position empfangen wird, von PositioningManager.

    Können Sie mit Effekten und Animationen hinzufügen, indem Sie Timer und so zu animieren, eine beliebige Genauigkeit ändert.

  6. 0
    /* create a MarkerOptions */
    MarkerOptions mOptions = new MarkerOptions();
    
    /* create a MarkerInfoAdapter */
    MarkerInfoAdapter infoAdapter = new MarkerInfoAdapter(MapsActivity.this.getLayoutInflater());
    
    /* set MarkerInfoAdapter into your Map object */
    MapFragment googleMap = FragmentManager.FindFragmentById<MapFragment> (Resource.Id.map);
    
    /* get the GoogleMap object */
    GoogleMap myMap = googleMap.getMapAsync(this);
    
    /* set myMap type */
    myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    
    /* set the MarkerInfoAdapter */
    myMap.clear(); /* 
    myMap.setInfoWindowAdapter(infoAdapter);
    
    
    /* you must have your current location's LatLng  */
    mOptions.position(currentLatLng); /* reach the position of the LatLng for that mark */
    
    /* set the icon for your current location using BitmapDescriptorFactory */
    mOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
    myMap.addMarker(mOptions);
    
    /* modify your marker icon to HUE_BLUE */                       mOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
  7. 0

    Ich hatte das gleiche problem wie du und nach zwei Wochen versuchen, alle Arten von Optionen, diese Zeilen von code war für mich so yo kann das „Blaue Symbol“

    m_map.setCenter(new GeoCoordinate(latitudeGPS, longitudeGPS, 0.0),Map.Animation.NONE);
                    m_mapFragment.getPositionIndicator().setVisible(true);
                    m_map.getPositionIndicator().setAccuracyIndicatorVisible(true);
                    Log.d("initialize bolita", "" + 1.1 );
                    PositioningManager.getInstance().start(PositioningManager.LocationMethod.GPS_NETWORK);m_map.addMapObject(m_positionIndicatorFixed);

    Stellen Sie sicher, dass Sie angefordert haben alle Berechtigungen auf Ihr manifest.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.