当前位置: 首页 > 知识库问答 >
问题:

无法在google Map上看到多个标记

裴金鑫
2023-03-14

我想在谷歌地图上显示多个标记。我的latlng坐标是从解析数据库中提取的,但我无法看到标记。我的第二个问题是,我想显示一个标题是餐厅名称与标记,我如何做?

这是我的代码:

private class putMarker extends AsyncTask> {

        @Override
        protected ArrayList doInBackground(Void... params) {
            // TODO Auto-generated method stub
            try {

                Toast.makeText(getApplicationContext(),
                        longitude + " " + latitude, Toast.LENGTH_SHORT).show();

                ParseQuery query = new ParseQuery(
                        "Details");
                ParseGeoPoint myGeoPiont = new ParseGeoPoint(latitude,
                        longitude);
                query.whereNear("location", myGeoPiont);
                query.setLimit(10);
                ob = query.find();
                for (ParseObject resObj : ob) {
                    ParseGeoPoint location = resObj
                            .getParseGeoPoint("location");
                    restaurantName = (String) resObj.get("RestaurantName");
                    LatLng resLatLng = new LatLng(location.getLatitude(),
                            location.getLongitude());
                    Toast.makeText(getApplicationContext(),
                            restaurantName, Toast.LENGTH_SHORT)
                            .show();
                    PiontList.add(resLatLng);
                }

            } catch (Exception e) {
                // TODO: handle exception
            }
            return PiontList;
        }
        protected void onPostExecute(ArrayList latlngList) {
            for(LatLng res: latlngList)
            {
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(res);
                markerOptions.icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                googleMap.addMarker(markerOptions);
            }
        }

    }

请帮帮我。

共有3个答案

终翔
2023-03-14

我看到这里有几个问题。

正如@Raghunandan所提到的,您不能从doInBackground()更新UI,因此您不能从那里添加标记。但是,您可以在这里创建MarkerOptions对象,然后将它们附加到PostExecute/或承载Google Maps的activity中的GoogleMap。

在onPostExecute()中,您没有为标记设置任何标题或代码段。无论何时创建标记,请确保设置标题。然后当用户单击标记时,默认行为将您的rest名称显示为标题。代码将是这样的(@inzimam Tariq IT也提到过:

MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(res)
                .setTitle(restaurantName)
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                googleMap.addMarker(markerOptions);
张可人
2023-03-14

试试这个

//  Create lat long points
Latlng[] point_new = new LatLng[8];
                point_new[0] = new LatLng(31.5301843, 74.3207487);
                point_new[1] = new LatLng(31.5214693,74.3236027);
                point_new[2] = new LatLng(31.5194393, 74.3257327);
                point_new[3] = new LatLng(31.4942166, 74.3004533);
                point_new[4] = new LatLng(31.4864646, 74.2911203);
                point_new[5] = new LatLng(31.4803596, 74.2787933);
                point_new[6] = new LatLng(31.4764716, 74.2638203);
                point_new[7] = new LatLng(31.4775236, 74.2628873);
//  Add markers 

 for (int i = 0; i < point_new.length; i++) {
                    MarkerOptions markerOptions = new MarkerOptions()
                            .position(point_new[i]);
                    marker = mMap.addMarker(markerOptions);
                    marker.setTitle("Points");
                    marker.setSnippet("Distance = 9.6 km, Time = 20 minute/s");
                    marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.p));
}

//将相机设置为变焦级别为9的最后一点

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(point_new[7], 9));
邵文乐
2023-03-14

这可能是由于onPostExecute()中的googleMap对象不可达。请确保googleMap是全局声明的。

如果可能,请粘贴整个代码以便更好地评估

 类似资料:
  • 在我的应用程序中,我使用的是谷歌地图,首先我是通过标记显示用户当前的位置,并通过一个透明的圆圈显示其准确性,现在当我想添加另一个标记到代表我以前的位置的同一点时,相同的代码对我不起作用,请有人帮我找出代码的错误,我只是想在一个地图视图中添加多个标记 下面是我用来显示两个标记的代码:- 通过使用MapOverlay类,我可以在地图上放置一个显示用户当前位置的pin,但当我使用MapOverlay1显

  • 有人有更好的主意吗?

  • 我正在尝试将本地计算机(Windows x64)上的JProfiler GUI连接到远程计算机(Windows x64)上运行的JProfiler代理。远程机器有两个JVM,一个是JBOSS JVM,另一个是Java应用程序,通过YAJSW的包装服务作为Windows服务。这些JVM由Windows用户配置文件1启动。我将JProfiler代理zip文件粘贴到远程机器上,并通过mstsc登录。当我

  • 我正在尝试集成statsd datadog。 我已经用-e dd_DOGSTATSD_NON_LOCAL_TRAFFIC=“true”启动了dd代理容器,apiKey也正确(容器日志证实了这一点) 我正在使用官方代码示例测试集成 在datadog仪表板上的metrics explorer中,我看到数据为 问题 但无法在datadog仪表板上的任何地方找到我推送的确切指标,如何通过statsd查看我

  • 我有一个问题:我目前正在为一个图书馆(它是为学校)的网络应用程序的项目工作。 并且我想返回我的视图与3变量表单查询,但这似乎不起作用。它首先适用于2人,但不适用于3人。 下面是我的代码: 但是$ResultsLoan似乎从来没有进入我的视野...谁能帮帮我吗?