アプリケーションにマップビューがあります。また、地図上に1,000を超えるオーバーレイを表示する必要があります。そして、私はこれらの場所を含むリストを持っています。それで、リスト内のアイテムを反復処理して1,000個のオーバーレイオブジェクトを作成する必要がありますか?そして、誰かが私にこれを行うための効率的な方法を与えることができますか?
3 に答える
0
このため、1000オーバーレイを作成する必要はありません。itemizedoverlayにオーバーレイを追加し、mapoverlayにこのitemizedoverlayを追加して、新しいitemizedoverlayを追加する前にオーバーレイにデータを入力するだけです。
try
{
point = new GeoPoint((int) (Double.parseDouble(list.get(i).getLatitude()) * 1e6),(int) (Double.parseDouble(list.get(i).getLongitude()) * 1e6));
overlayitem = new OverlayItem(point, list.get(i).getLocationName()+"_@_"+list.get(i).getLatitude()+"_@_"+list.get(i).getLongitude()+"_@_yes", list.get(i).getAddress());
itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.populateOverlay();
mapOverlays.add(itemizedoverlay);
}
catch (Exception e)
{
Log.v("log",""+e.toString());
e.printStackTrace();
}
于 2012-11-02T05:23:43.100 に答える
0
Sanketのやり方では、すべてのポイントが追加された後にポイントが入力されるため、これは遅れる傾向があります。より効率的な方法は、次のように実行できます。
何が起こっているのかというと、GeoPointを追加するたびにMapViewにデータが入力されているということです。これをコードに追加してみてください:
GeoPointsをループした後、このコードを配置します
itemizedOverlay.populateNow();
itemizedOverlayを次のように変更します。
public void addOverlay(OverlayItem overlay) {
m_overlays.add(overlay);
}
public void populateNow()
{
populate();
}
@Override
protected OverlayItem createItem(int i) {
return m_overlays.get(i);
}
@Override
public int size() {
return m_overlays.size();
}
于 2012-11-02T06:53:20.480 に答える
0
以下のコードで表示できるのは表示領域マーカーと非表示領域マーカーのみです。
mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
for (Marker marker : markerArrayList) {
if (bounds.contains(marker.getPosition())) {
marker.setVisible(true);
} else {
marker.setVisible(false);
}
}
}
});
于 2018-12-28T07:29:32.537 に答える