Актуализирайте позицията на иконата на POI

Искам да добавя изображение на точните координати, дадени от GPS-а.

Успях да го направя, но всеки път, когато координатите се актуализират, се добавя ново изображение (и просто не се актуализират координатите на текущото изображение).

Ето какво направих:

if (Geolocation.isSupported){
my_geo.addEventListener(GeolocationEvent.UPDATE, onGeoUpdate);
} 

function onGeoUpdate(e:GeolocationEvent):void{
    trace("OngeoUpdate");
     [Embed (source="rond3.png")] 
            var rondImg:Class;
my_geo.removeEventListener(GeolocationEvent.UPDATE, onGeoUpdate);

              var myIcon:MapIcon = new MapIcon();

                myIcon.setImage(new rondImg());
              embeddedIconPoi = new Poi(new LatLng(e.latitude, e.longitude));
              embeddedIconPoi.rolloverAndInfoTitleText = "You're here";
              embeddedIconPoi.icon = myIcon;

              rondColl.add(embeddedIconPoi);
          myMap.addShapeCollection(rondColl);
}

Предполагам, че е така, защото поставих моята променлива във функцията onGeoUpdate, така че всеки път, когато се извика, тя създава нова POI.

Така че опитах това:

    if (Geolocation.isSupported){

my_geo.addEventListener(GeolocationEvent.UPDATE, onGeoUpdate);
            [Embed (source="rond3.png")] 
            var rondImg:Class;
            var myIcon:MapIcon = new MapIcon();
            rondColl.add(embeddedIconPoi);
            myIcon.setImage(new rondImg());         
            embeddedIconPoi = new Poi(new LatLng());
            embeddedIconPoi.rolloverAndInfoTitleText = "You're here";
            embeddedIconPoi.icon = myIcon;
          myMap.addShapeCollection(rondColl);
} 

function onGeoUpdate(e:GeolocationEvent):void{
    trace("OngeoUpdate");
    Poi(new LatLng(e.latitude, e.longitude))

}

но не работи (Грешка #1034: Type Coercion failed: could convert com.mapquest::LatLng@916bfd1 в com.mapquest.tilemap.pois.Poi.)

знаеш ли какво не е наред


РЕДАКТИРАНЕ

Ето какво съм импортирал в моя код:

import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.StageScaleMode;
    import com.mapquest.tilemap.*;
    import com.mapquest.LatLng;
    import com.mapquest.tilemap.pois.*;
import com.mapquest.tilemap.overlays.*;
import com.mapquest.tilemap.pois.Poi;

                import com.mapquest.tilemap.pois.MapIcon;

        import flash.sensors.Geolocation; 
import flash.events.GeolocationEvent;
            import com.mapquest.tilemap.pois.PoiEvent;


    import com.mapquest.tilemap.pois.Poi;
    import com.mapquest.services.directions.Directions;
import com.mapquest.services.directions.DirectionsConstants;
import com.mapquest.services.directions.DirectionsEvent;
import com.mapquest.services.geocode.Geocoder;
import com.mapquest.services.geocode.*;
import com.mapquest.services.geocode.GeocoderEvent;
import com.mapquest.services.geocode.GeocoderLocation;
import com.mapquest.tilemap.Size;
import flash.display.Bitmap;
import com.mapquest.tilemap.TileMap;
import com.mapquest.tilemap.controls.inputdevice.MouseWheelZoomControl;
import com.mapquest.tilemap.controls.shadymeadow.SMLargeZoomControl;
 import com.mapquest.tilemap.controls.shadymeadow.SMViewControl;

person user2421975    schedule 10.07.2014    source източник


Отговори (1)


Прав си. Това е така, защото сте поставили вашата променлива във функцията onGeoUpdate(). Никога преди не съм използвал геолокация, но трябва да опитате да зададете иконата си извън onGeoUpdate() и да актуализирате само координатите във функцията. Нещо подобно може да работи:

[Embed (source="rond3.png")] 
var rondImg:Class;

var myIcon:MapIcon = new MapIcon();
myIcon.setImage(new rondImg());

embeddedIconPoi = new Poi(new LatLng());
embeddedIconPoi.rolloverAndInfoTitleText = "You're here";
embeddedIconPoi.icon = myIcon;

rondColl.add(embeddedIconPoi);
myMap.addShapeCollection(rondColl);

if (Geolocation.isSupported){
    my_geo.addEventListener(GeolocationEvent.UPDATE, onGeoUpdate);
} 

function onGeoUpdate(e:GeolocationEvent):void{
    embeddedIconPoi.latLng.lat = e.latitude;
    embeddedIconPoi.latLng.lng = e.longitude;
}

Ако имате нужда от повече информация, проверете документите https://developer.mapquest.com/content/as3/v5/5.5.0/documentation/devref/com/mapquest/tilemap/pois/Poi.html#Poi()

person Karmacon    schedule 11.07.2014
comment
Мерси. Опитах метода setLatLng, но той дава грешка 1061: Извикване на евентуално недефиниран метод setLatLng чрез препратка със статичен тип com.mapquest.tilemap.pois:Poi. Забравих ли да импортирам нещо? : - person user2421975; 11.07.2014
comment
Това мобилно приложение ли е? Намерих друга документация за мобилен телефон - person Karmacon; 11.07.2014
comment
Опитайте embeddedIconPoi.latLng = new LatLng(e.latitude, e.longitude); - person Karmacon; 11.07.2014
comment
Или embeddedIconPoi.latLng.lat = e.latitude; embeddedIconPoi.latLng.lng = e.longitude; - person Karmacon; 11.07.2014