0

ダッシュボード ウィンドウと 2 つの追加ウィンドウを含む iOS アプリを Titanium Appcelerator で作成しています。そのうちの 1 つには、ロードに 3 秒ほどかかるマップビューが含まれています。これは、空白の画面を見るには長い時間です。

Appcelerator フォーラムで、ユーザーの位置が一定量変化した場合にのみユーザーの位置を更新する方法を尋ねるこの投稿が投稿されました。これを実装しました。私の現在の実装は次のとおりです。

  1. 大きな動きでのみ更新されるように距離フィルターを設定します

    Titanium.Geolocation.distanceFilter = 10;
    
  2. 重要でない開始位置 (0,0) でマップビューを作成し、ウィンドウに追加します

    var mapview = Titanium.Map.createView({
        mapType: Titanium.Map.STANDARD_TYPE,
        region: {latitude: 0, longitude: 0, latitudeDelta:0.05, longitudeDelta:0.05},
        animate:false,
        regionFit:true,
        userLocation:false
    });
    
    win.add(mapview);
    
  3. ユーザーの場所を取得し、マップビューの場所をそれに設定します

    //Should only go once
    Titanium.Geolocation.getCurrentPosition(function(e)
    {
        if (e.error)
        {
            alert('Cannot get your current location');
            return;
        }
    
        var longitude = e.coords.longitude;
        var latitude = e.coords.latitude;
        var altitude = e.coords.altitude;
        var heading = e.coords.heading;
        var accuracy = e.coords.accuracy;
        var speed = e.coords.speed;
        var timestamp = e.coords.timestamp;
        var altitudeAccuracy = e.coords.altitudeAccuracy;
    
        var current = {
                latitude : latitude,
                longitude : longitude,
                latitudeDelta : .05,
                longitudeDelta : .05
            };
        mapview.setLocation(current);
        mapview.userLocation = true;
    });
    

マップの読み込みを速くしたいだけです。ユーザーの位置を特定するのに数秒かかる場合は、問題ありません。しかし、ユーザーに空白の画面を 3 秒間見させるのはひどいことです。これを回避する方法はありますか?

私も設定しました:

Titanium.Geolocation.accuracy = Titanium.Geolocation.ACCURACY_BEST;

それが違いを生むなら。

編集:ユーザーの場所を取得している部分をコメントアウトしましたが、マップの読み込みには同じ時間がかかります。問題は、作成する前に map.js ファイルを開いているという事実に関係していると思います。

私の app.js ファイルでは、map.open() を呼び出します。次に、map.js ファイルの先頭で次のようにします。

var win = Ti.UI.currentWindow;

次に、マップを作成して追加します。アーキテクチャを維持しながらマップをプリロードする方法がわかりません。これは可能ですか?

4

1 に答える 1