3

Google Maps APIで問題が発生しています。ポイントを格納するために作成したオブジェクトを保持する配列があります。

私の配列とクラス:

var tPoints = [];    
function tPoint(name) {
        var id = name;
        var points = [];
        var pointsCount = 0;
        ...
        this.getHeadPoint = function() { return points[pointsCount-1]; }
    }

tPoint はGLatLngポイントの配列を保持します。すべての HeadPoints を表示するために、現在のマップ境界から拡張されたGLatLngBoundsオブジェクトを返す関数を書きたいと思います。

ここに私がこれまでに持っているものがあります..

function getBounds() {
    var mBound = map.getBounds();
    for (var i = 0; i < tPoints.length; i++) {
        alert(mBound.getSouthWest().lat() + "," + mBound.getSouthWest().lng());
        alert(mBound.getNorthEast().lat() + "," + mBound.getNorthEast().lng());
            currPoint = trackMarkers[i].getHeadPoint();        
            if (!mBound.containsLatLng(currPoint)) {
                mBound.extend(currPoint);
            }
        }
    return mBound;
}

アラートに対してこれらの値を返します。(一般的には米国上)

"19.64258,NaN"
"52.69636,NaN"
"i=0"
"19.64258,NaN"
"52.69636,-117.20701"
"i=1"

NaN が返される理由がわかりません。境界を使用してズーム レベルを取得すると、NaN 値が原因で map.getBoundsZoomLevel(bounds) が正しくない 0 を返すと思います。GLatLngBoundsを間違って使用していますか?

4

2 に答える 2

1

Googleマップのサンプルはこのコードを使用しています...

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();

...これは、個々の lng/lat 座標を取得しようとする前に、SouthWest/NorthEast 境界を変数に入れています。「ネストされた」評価で問題が発生している可能性があります。詳細なアプローチを試して、必要なデータが得られるかどうかを確認しましたか?

于 2008-08-19T18:46:25.670 に答える
1

私もGoogle検索でその例を見つけて、それで遊んだ. それは問題ではありませんでした。

バグを見つけました。誰もその問題を解決できなかったでしょう。境界をテストする直前に、マップの中央に不適切なデータを配置していたことが判明しました。しかし、JavaScript は私lngSpan = northEast.lng() - southWest.lng();の var を文字列として解釈しました。(maxLng-minLng)/2 + minLngのようなもの"20.456-116.1178"を返しますlng。マップを中心に置いたvar centerPoint = new GLatLng(setLat, setLng);後、マップ API が少しおかしくなりました ;)

でも助けてくれてありがとう。

于 2008-08-19T21:29:05.187 に答える