2016-04-18 10 views
0

非常に奇妙な問題です。私はリストに項目を持っています。クリックして拡大/縮小するときに切り替わります。展開すると、その下に表示されているアイテムも、ページ上にあるGoogleマップのマーカーとして表示されます。私のテストでは、リストに1つの項目があります。私がクリックすると、その下にある関連するアイテムが表示され、マーカーがマップ上に表示されるか、トグル状態に応じて非表示になります。特定の量のトグルクリック後にマップマーカーが消えています

このアイテムをクリックして正確に11回クリックすると、表示されるはずのマーカーの1つが表示されなくなります。毎回正確に11回クリックする理由がわかりません。見知らぬ人でも、地図をドラッグまたはズームすると、欠落しているマーカーがすぐに表示されます。その手がかりのために、私は問題がどこにあるのか知っていて、今はそれを無効にして問題が解消されました。ここに関連するコード

function setNewMarkers() { 
    //clearOldMarkers(); 
    bounds = new google.maps.LatLngBounds(); 
    for (i = 0; i < markers.length; i++) { 
     markers[i].setMap(map); 
     bounds.extend(markers[i].getPosition()); 
    } 
    map.fitBounds(bounds); 
    /*if (dragged == false && dblclick == false) { 
     map.fitBounds(bounds); 
     if (markers.length == 1) { 
      map.setZoom(13); 
     } 
    }*/ 

}

通知下部にコメントアウトセクションです。それは問題だったし、コメントアウトしてから消えてしまった。マーカーが1つしかなく、すべてのリストアイテムが折りたたまれていると、マップのズームインがあまりにも遠すぎるのを防ぐようにしていました。 私はfitBoundsを呼び出す必要がありますが、10個のクリックで動作していても、マーカーが1つだけの場合、後でズームを調整する方法に問題があります。

私は微妙なことを忘れています。私は気づいていない可能性があると考えています。どうも。

+0

おそらく、マーカーが1つしかない場合は、fitBoundsを呼び出さないでください。 – geocodezip

+0

それは考えです。たぶん代わりに1つの残されたマーカーの緯度を取って地図の中心にするようにしてから、それをズーム13にしてください。他の人の言葉も見てみましょう。どうも。 – user192632

+0

これは良いアイデアだし、うまくいくと思われる。ここに回答を追加してこれをあなたの推薦に含めることができれば、それをマークすることができます。 map.panTo(マーカー[0] .getPosition()); map.fitBoundsの代わりに – user192632

答えて

1

マーカーが1つの場合は、fitBoundsを2回呼び出しています。代わりに、センターが何であるか(既存のマーカーの1つ)とズームを知っているので、それらを使用してください。

function setNewMarkers() { 
    bounds = new google.maps.LatLngBounds(); 
    for (i = 0; i < markers.length; i++) { 
    markers[i].setMap(map); 
    bounds.extend(markers[i].getPosition()); 
    } 
    map.fitBounds(bounds); 
    if (dragged == false && dblclick == false) { 
    if (markers.length == 1) { 
     map.panTo(markers[0].getPosition()); 
     map.setZoom(13); 
    } 
    } 
} 
関連する問題