Мне не совсем понятно, что вы делаете, потому что я не уверен, как itemizedOverlay рисует между точками.Но держу пари, что основная проблема в том, что вы используете кучу OverlayItems, когда гораздо быстрее просто пропустить эту часть полностью и переопределить метод itemizedOverlay draw()
.Я делал это раньше, и это хорошо работает для рисования линий.Основной псевдокод:
create List of GeoPoints
add List to ItemizedOverlay
add a dummy marker to ItemizedOverlay (so that it knows to call `draw()`)
in ItemizedOverlay.draw(), use mapView.getProjection() to map the array of GeoPoints to x,y coords
use Canvas.drawLines() to draw a line between all your points
Поскольку скорость имеет значение, обязательно создайте объекты Paint в конструкторе ItemizedOverlay;они могут использоваться повторно столько раз, сколько вы хотите.
Также как примечание, похоже, что вы используете addOverlay()
, как показано в Hello, MapView demo .Единственная проблема с этим - они вызывают populate()
каждый раз, когда вы добавляете элемент;если вы добавляете несколько точек, лучше сразу добавить несколько оверлеев, а затем в конце вызвать populate()
.