Beiträge: 272 Wohnort: Frankfurt Registriert: Nov 2005
PV3D: For Schleifen Problem
Hi zusammen,
ich mal wieder mit einem neuen Problem:
Ich durchlaufe eine XML-Datei in welcher die Längen- und Breitengrade
(Langitude + Latidue) stehen und ausgelesen werden. Mit diesen
Daten berechne ich die Positionierung auf meinem Globus. Soweit so gut,
die Schleife wird soweit durchlaufen, dennoch wird nur ein einziger Marker
auf dem Globus platziert. Irgendwie habe ich das Objektprinzip noch
nicht so ganz durchschaut, weis scheint...
Hier also mal meine Schleife, wie gesagt, die Längen- und Breitengrade werden
der Reihe nach in die entsprechenden Variablen geschreiben, funktioniert soweit:
ActionScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
private function getLocationGeo(country_name:String):void {
zudem solltest du die werte auch als number casten...
ActionScript:
1
var latitude:Number = Number(loadedXML.countries[0].country.(@name == country_name ).locations.location[i].latitude.text());
so wies aussieht machst du schon mehrere marker, allerdings alle am selben punkt....lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Beiträge: 272 Wohnort: Frankfurt Registriert: Nov 2005
Themenautor/in
Hi Mister Herr Springer,
erstmal vielen Dank für Deine Antwort. Die 3 entsprechenden Longitudes and Latitudes wurden bereits
richtig ausgeben. Ein Trace auf die Marker Objects als auch auf die XML-Werte, also auch auf die x, y, z Koords ergibt folgendes Ergebnis:
Hier auch nochmal die 3 Funktionen in meiner Main.as, damit das was geschehen soll auch besser nachvollzogen werden kann.
Irgendwo ist hier der Hase begraben...
// building the location submenu of each country clicked
private function getCountryhandler(evt:MouseEvent):void {
FlashConnect.trace ("TARGET: " + evt.currentTarget.id);
var i:Number;
addChild (submenu_mc);
submenu_mc.alpha = 0;
trace("LENGTH OF LOCATIONS: " + loadedXML.countries.country.(@name == evt.currentTarget.id ).locations.location.length());
for (i = 0; i < loadedXML.countries.country.(@name == evt.currentTarget.id ).locations.location.length(); i++) {
// trace (loadedXML.countries[0].country.(@name == evt.currentTarget.id ).locations.location[i].name.text());
var subbutton_txt:String = loadedXML.countries[0].country.(@name == evt.currentTarget.id ).locations.location[i].name.text();
protected function placeMarker( marker:Marker, latitude:Number, longitude:Number ):void
{
//Translate the geo coordinates to 3D coordinates.
var markerVector:Number3D = translateGeoCoords( latitude, longitude, globe.radius );
private function translateGeoCoords( latitude:Number, longitude:Number, radius:Number ):Number3D
{
//Convert latitude and longitude to radians.
latitude = Math.PI * latitude / 180;
longitude = Math.PI * longitude / 180;
//Adjust latitude and longitude by radians.
latitude -= ( latitudeDegreeOffset * ( Math.PI/180 ) ); // offset latitude by n degrees (in radians).
longitude -= ( longitudeDegreeOffset * ( Math.PI/180 ) ); // offset longitude by n degrees (in radians).
//Spherical to cartesian coordinate conversion formula.
var x:Number = radius * Math.sin( latitude ) * Math.cos( longitude );
var y:Number = radius * Math.sin( latitude ) * Math.sin( longitude );
var z:Number = radius * Math.cos( latitude );