1

私はこの機能を持っています

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
}

addMarkers()を使用してマーカーを追加するだけでなく、緯度、経度、タイムスタンプをオブジェクトに保存したいと思います。

保管するのに一番いい方法はこんな感じだと思っていました

{ strUserName : { timestamp : point.timestamp , LatLng : point.LatLng }, strUserName : { timestamp : point.timestamp , LatLng : point.LatLng } }

また

{ strUserName : { timestamp : point.timestamp , LatLng : { lat : point.lat, lng : point.lng } }, ..

このオブジェクトを作成するにはどうすればよいですか?

アップデート:

返信ありがとうございます。私は以下を試しました。

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var pos = new google.maps.LatLng(point.lat, point.lng);

    var history = {
        strUserName : {
            timestamp : point.timestamp ,
            LatLng : pos
        }
    };

    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
console.log(history);
}

コンソールのスクリーンショットを参照してください スクリーンショット

ユーザー名が機能せず、タイムスタンプごとにアイテムを取得できず、1つのエントリを上書きするだけですか?

4

2 に答える 2

3

このオブジェクトを作成するにはどうすればよいですか?

あなたがしたのとほとんど同じです:

var obj = { strUserName : { timestamp : point.timestamp , LatLng : point.LatLng }, strUserName : { timestamp : point.timestamp , LatLng : point.LatLng } };

またはもっと読みやすく:

var obj = {
    strUserName : {
        timestamp : point.timestamp ,
        LatLng : point.LatLng
    },
    strUserName : {
        timestamp : point.timestamp ,
        LatLng : point.LatLng
    }
};

これはオブジェクト初期化子です。指定されたプロパティ(実際には3つの新しいオブジェクト)を使用して新しいオブジェクトを作成し、それらの最も外側への参照を返します。

いくつかの簡単な例を取り上げます。

// Create a blank object (an object with no properties of its own):
var a = {};

// Create an object with a `name` property with the value "Fred"
var b = {name: "Fred"};

// Create an object with a `foo` property, which is *another* freshly-created
// object with a `name` property with the value "Barney"
var c = {
    foo: {
        name: "Barney"
    }
};

更新された質問について:

ユーザー名が機能せず、タイムスタンプごとにアイテムを取得できず、1つのエントリを上書きするだけですか?

もちろんhistory、以前のコピーをどこにも保存せずに、各ループで上書きしています。たとえば、それらを配列に格納できます。

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  var historyArray = [];
  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var pos = new google.maps.LatLng(point.lat, point.lng);

    historyArray[i] = {
        strUserName : {
            timestamp : point.timestamp ,
            LatLng : pos
        }
    };

    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
console.log(historyArray);
}
于 2012-07-03T10:30:12.977 に答える
0
var obj = {strUserName: {timestamp: point.timestamp, lat: point.lat, long: point.long}}
于 2012-07-03T10:30:39.210 に答える