Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Google Maps V3 2017在添加标记/圆圈时仍然缓慢_Android_Google Maps - Fatal编程技术网

Android Google Maps V3 2017在添加标记/圆圈时仍然缓慢

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.

Android上的Google Maps API仍然存在一个问题,即加载许多标记/圆圈需要很长时间。在我的例子中,我用Lat/Lng在谷歌地图上画了130多个圆圈。这个过程需要20秒才能完成。下面是添加圆圈的代码,该圆圈在
@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();
in
doInBackground()运行此功能
但这仍然会产生相同的性能。

好的,这里是解决方案。事实证明,添加标记并不是处理器密集型的。地理定位是一个问题。如果您遇到这个问题,那是因为您在主线程上进行地理定位。我解决问题的方法是将地理定位计算放在异步任务上(
doInBackground();
)然后在
onPostExecute
添加标记

还有一个问题是地理定位需要时间(UI运行平稳,但没有标记),但这是Google Maps API的问题。我在启动时做了一次地理定位,然后将所有内容存储到SQLiteDataBase中,然后每次都从那里读取


谢谢

好的,我解决了实际问题。似乎地理定位,获取字符串位置的lat/lng实际上是不添加标记的问题。有没有关于如何加快此过程的建议?