Android上的Google Maps API仍然存在加载许多标记/圈子需要很长时间的问题。在我的情况下,我正在使用Lat / Lng向Google地图绘制130多个圆圈。此过程需要20秒才能完成。以下是添加@Override public void onMapLoaded
之后调用的圈子的代码:
List<Crime> crimes = mCrimeManager.getListOfCrimes();
Log.d("CRIME SIZE TAG", " " + crimes.size());
for(Crime crime:crimes)
{
if(!(getLocationOfCrime(crime) == null))
{
Circle circle = googleMap.addCircle(new CircleOptions()
.clickable(true)
.radius(5)
.center(getLocationOfCrime(crime)));
circle.setTag(crime);
我知道这是问题,因为删除此代码会导致所有内容顺利运行且没有延迟。
我过去曾查看过多个问题,但大多数问题都是使用群集或只加载某个范围而无法应用于我的情况。我已尝试在runOnUiThread();
中使用doInBackground();
在AsyncTask上运行此功能,但仍能产生相同的效果。
答案 0 :(得分:0)
好的伙伴们就是解决方案。事实证明,添加标记不是处理器密集型的。地理位置是问题所在。如果您遇到此问题,那是因为您在主线程上进行了地理定位。我解决问题的方法是将地理位置计算放在AsyncTask(doInBackground();
)上,然后在onPostExecute
上添加标记。
仍然存在地理定位需要时间(UI运行平稳但没有标记)的问题,但这是Google Maps API问题。我通过在启动时执行一次地理定位然后将所有内容存储到SQLiteDataBase中然后在每次读取之后来解决这个问题。
由于