1

グローバル座標を使用してFlexでWebアプリを作成しています

Webサービスから文字列として座標を取得し、次のようにします。

latStr:String = "28.7242100786401";
longStr:String = "-106.12635420984";

var cLat:Number = new Number(latStr);
var cLong:Number = new Number(longStr);

これは、IEとChromeで、Webサーバーからローカルでデバッグするときに完全に機能しますが、Firefoxは、Webサーバーからではなく、Webサーバーでローカルにデバッグするときにのみ機能し、「」cLatcLong返しますNaN

自分でチェックしてください。結果をクリックするとアラートがポップアップ表示されます:http: //mundobuk.com/prueba/mapa/main.html?buscar = oxxo

だから私はを使ってみましたが、それはにparseFloat()丸めcLatられます:(28cLong-106

次に、例28と7242100786401のように、小数を整数から分離してから、7242100786401/10000000000000=0.7242100786401を除算してみました。

2つの数字28と0.7242100786401を持っています私はそれらを合計します

28 + 0.7242100786401 = 28.7242100786401

ここにコード形式があります:

var latArr:Array = latStr.split(".");
var longArr:Array = longStr.split(".");


var latDivStr:String = "1";
for (var i:int= 0; i< latArr[1].length; i++){
latDivStr += "0";
}

var longDivStr:String = "1";
for (var j:int = 0; j< longArr[1].length; j++){
longDivStr += "0";
}
var cLat:Number = parseFloat(latArr[0]) + arseFloat(latArr[1])/parseFloat(latDivStr);
var cLong:Number = parseFloat(longArr[0]) - parseFloat(longArr[1])/parseFloat(longDivStr);

繰り返しになりますが、この方法は、WebサーバーのFirefoxではなく、どこでもうまく機能します> _>

誰かアイデアはありますか?私はこの@_@に夢中になる

4

3 に答える 3

1

カンマは多くのヨーロッパ諸国のセパレーターであるため、サーバーまたはクライアントのいずれかの地域構成である可能性があります。

于 2009-03-27T16:32:15.700 に答える
1

Flash ランタイムは、さまざまなブラウザーや OS が SWF を同じように解釈するようになっているため、このようなエラーは聞いたことがありません。Number キャストの前に「new」を使用するべきではないと思います。

latStr:String = "28.7242100786401";
longStr:String = "-106.12635420984";

var cLat:Number = new Number(latStr);
var cLong:Number = new Number(longStr);

これは次のようになります。

var cLat:Number = Number(latStr); //Number is right because its a Floating Point, but remove new.
var cLong:Number = Number(longStr); //Number is right because its a Floating Point, but remove new.

以下を使用してテストしたところ、丸めが行われないことがわかりました。

var latStr:String = "28.7242100786401"; var longStr:String = "-106.12635420984";

trace(parseFloat(latStr)); //Outputs:  "28.7242100786401";
trace(parseFloat(longStr)); //Outputs:  "-106.12635420984";

trace(Number(latStr)); //Outputs:  "28.7242100786401";
trace(Number(longStr)); //Outputs:  "-106.12635420984";

この回避策が必要な理由がわかりません。また、私はメインのブラウザとして Firefox を使用していますが、あなたのサイトは問題なく動作しているようです。

乾杯。

于 2009-03-26T21:51:40.603 に答える
0

私はついにそれが機能しない理由を見つけました。Firefoxでは、ドット(。)を読み取る代わりに、Webサービスからコンマ(、)を読み取ります(vb.netで実行)。

ローカルでは、オンラインではなくドットとしても読み取られるため、IISサーバーO_oで何かを行う必要があると思います。

これが誰かに役立つことを願っています...

于 2009-03-27T16:28:46.253 に答える