我想在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:类型强制失败:无法将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;
答案 0 :(得分:0)
你是对的。这是因为您将变量放在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()