Android Google Maps V3 2017在添加标记/圆圈时仍然缓慢
Android上的Google Maps API仍然存在一个问题,即加载许多标记/圆圈需要很长时间。在我的例子中,我用Lat/Lng在谷歌地图上画了130多个圆圈。这个过程需要20秒才能完成。下面是添加圆圈的代码,该圆圈在Android Google Maps V3 2017在添加标记/圆圈时仍然缓慢,android,google-maps,Android,Google Maps,Android上的Google Maps API仍然存在一个问题,即加载许多标记/圆圈需要很长时间。在我的例子中,我用Lat/Lng在谷歌地图上画了130多个圆圈。这个过程需要20秒才能完成。下面是添加圆圈的代码,该圆圈在@Override public void onmapploaded之后调用: List<Crime> crimes = mCrimeManager.getListOfCrimes(); Log.d("CRIME SIZE TAG", " " + crimes.
@Override public void onmapploaded
之后调用:
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);
List crimes=mCrimeManager.getListOfCrimes();
Log.d(“犯罪规模标签”,“犯罪规模+犯罪规模());
用于(犯罪:犯罪)
{
如果(!(getLocationOfCrime(crime)==null))
{
Circle=googleMap.addCircle(新的CircleOptions()
.可点击(真)
.半径(5)
.中心(获取犯罪(犯罪)地点);
圆圈.setTag(犯罪);
我知道这是一个问题,因为删除此代码会使一切顺利运行,不会有任何延迟
我在过去研究过多个问题,但大多数问题都是使用集群或仅在特定范围内加载,这无法应用到我的案例中。我尝试在AsyncTask上使用
runOnUiThread();
indoInBackground()运行此功能
但这仍然会产生相同的性能。好的,这里是解决方案。事实证明,添加标记并不是处理器密集型的。地理定位是一个问题。如果您遇到这个问题,那是因为您在主线程上进行地理定位。我解决问题的方法是将地理定位计算放在异步任务上(doInBackground();
)然后在onPostExecute
添加标记
还有一个问题是地理定位需要时间(UI运行平稳,但没有标记),但这是Google Maps API的问题。我在启动时做了一次地理定位,然后将所有内容存储到SQLiteDataBase中,然后每次都从那里读取
谢谢好的,我解决了实际问题。似乎地理定位,获取字符串位置的lat/lng实际上是不添加标记的问题。有没有关于如何加快此过程的建议?