0

Google マップの実装で奇妙な問題が発生しています。lat/lng を提供する REST サービスから配列を取得しており、その情報を使用してマップにマーカーを配置し、機能を実装しています。

その部分は問題なく機能します。ページに出力されたマーカーを取得し、それらの境界を取得してマップをズームすると、問題が発生します。私はいくつかの解決策を読み、自分の能力を最大限に発揮してそれらを実装しようとしました。

これが私の実装です:

// Reset the maps bounds
MapView.bounds = new google.maps.LatLngBounds(null);

// Get the new map bounds
for (var i=0, j=MapView.markers.length; i<j; i++){
    var marker = MapView.markers[i],
        lat = marker.position.lat(),
        lng = marker.position.lng(),
        latlng = new google.maps.LatLng(lat, lng);

    MapView.bounds.extend(latlng);
};

// Set the map bounds to the new bounds
MapView.map.fitBounds(MapView.bounds);

使用されている座標のリストは次のとおりです。

21.245445,-105.167631
41.887668,-87.622522
49.817492,15.472962
50.075538,14.4378
33.951611,-118.387578
41.887668,-87.622522
14.782827,-90.793702
33.741973,-78.817013
45.922225,-95.408973
28.320306,-81.422964
36.166667,-86.783333
-17.82922,31.053961
-8.708704,115.169616
41.901514,12.460774
-34.013717,23.054811
20.483443,-86.971039
34.933333,34.083333
6.428055,-9.429499
38.79142,-95.960607
43.771033,11.248001
46.271588,13.95641
33.773,-78.779504
40.789342,-3.249749
20.926822,-156.695125
46.271588,13.95641
18.853921,-71.300939
36.462205,-5.011611
25.788969,-80.226439
50.36809,8.73632
37.540667,126.948346
45.495992,-121.5879
14.782827,-90.793701
0,0
13,-76
20.431006,-86.908065
40.75694,-73.984872
64.143935,-21.934099
-17.816667,25.15
12.879721,121.774017
32.640054,-117.084196
-16.522046,28.850942
40.280559,22.50584
39.202686,-106.831683
36.122611,-115.170973
38.79142,-95.960607
18.126285,-65.440099
22.876396,-109.918562
30.36884,-86.324846
36.076518,-115.153343
36.0443,14.251222
41.894809,-87.624214
36.0443,14.251222
-34.035086,23.046469
36.42,25.431667
-17.82922,31.053961
20.696686,-105.292631
18.533333,-68.366667
42.407211,-71.382437
21.158964,-86.845937
9.748917,-83.753428
14.782827,-90.793701
34.852965,32.361479
34.939737,32.461585
34.052234,-118.243685
64.143935,-21.934099
35.369598,24.482727
52.407927,3.222711
47.497912,19.040235
21.158964,-86.845937
37.446719,25.328862
21.160386,-86.843338
39.770247,21.182861
36.124253,-115.168476
46.421684,15.856075
116.468401,39.947856
41.553221,-70.608589
43.706449,7.292265
39.415044,21.737618
21.158964,-86.845937
20.629559,-87.126904
36.832012,25.897065
50.075538,14.4378
8.87509,98.352656
57.702051,11.982304
-24.183889,29.012778
38.904253,-77.047904
0,0
-25.360413,27.09947
55.940209,-3.225319
36.286023,-5.27918
-3.386069,39.971999
20.749045,-105.31098
17.280151,-62.689038
21.040195,-104.358146
14.782827,-90.793702
20.696686,-105.292631
50.071287,14.397221
51.891877,-8.493827

次に、それらの境界を使用してポリラインを作成し、問題がどこにあるかを見つけようとしましたが、奇妙な部分は間違っていましたが、マップはそれらの境界にズーム/パンしていません.

ポリラインのコード:

var ne = MapView.bounds.getNorthEast();
    var sw = MapView.bounds.getSouthWest();

var boundingBoxPoints = [
    ne, new google.maps.LatLng(ne.lat(), sw.lng()),
    sw, new google.maps.LatLng(sw.lat(), ne.lng()), ne
];

var boundingBox = new google.maps.Polyline({
    path: boundingBoxPoints,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
 });

boundingBox.setMap(MapView.map);

結果の写真 (これはマップがロードされたときのもので、変更されていません):

境界ボックスとマップのズーム/位置

そのようにロードされるか (運が良ければ)、ほとんどの旅行がマップの上部からロードされ、2 つしか表示されず、ほとんどのマップ キャンバスが灰色になります。

私は今、完全に負けています。誰かが私を正しい方向に向けてもらえますか?

4

0 に答える 0