【问题标题】:Unable to see multiple marker on google Map无法在谷歌地图上看到多个标记
【发布时间】:2013-11-08 15:43:30
【问题描述】:

我想在谷歌地图上显示多个标记。我的 latlng 坐标是从 Parse 数据库中获取的,但我看不到标记。 我的第二个问题是我想显示一个带有标记的餐厅名称的标题,我该怎么做?

这是我的代码:

私有类 putMarker 扩展 AsyncTask> { @覆盖 受保护的 ArrayList doInBackground(Void... 参数) { // TODO 自动生成的方法存根 尝试 { Toast.makeText(getApplicationContext(), 经度 + " " + 纬度,Toast.LENGTH_SHORT).show(); ParseQuery 查询 = 新 ParseQuery( “细节”); ParseGeoPoint myGeoPint = 新 ParseGeoPoint(纬度, 经度); query.whereNear("位置", myGeoPint); 查询.setLimit(10); ob = 查询.find(); for (ParseObject resObj : ob) { ParseGeoPoint 位置 = resObj .getParseGeoPoint("位置"); restaurantName = (String) resObj.get("RestaurantName"); LatLng resLatLng = new LatLng(location.getLatitude(), location.getLongitude()); Toast.makeText(getApplicationContext(), restaurantName, Toast.LENGTH_SHORT) 。显示(); PintList.add(resLatLng); } } 捕捉(异常 e){ // TODO: 处理异常 } 返回点列表; } 受保护的无效 onPostExecute(ArrayList latlngList){ for(LatLng res: latlngList) { MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(res); markerOptions.icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); googleMap.addMarker(markerOptions); } } }

请帮帮我。

【问题讨论】:

  • 您无法从doInbackground() 更新用户界面。取出吐司
  • 非常感谢我现在可以看到标记,但是我如何将 latlng 和字符串发送到我的 onPostExecute() 方法。
  • 您可以使用字符串生成器并返回结果。返回的结果是 onPostexecute 的参数
  • 请不要用勺子喂食。
  • 请你发一个例子。我想把 latlng 和 string 一起发送,这样我就可以在那个标记上放一个标题。

标签: android google-maps


【解决方案1】:

这可能是由于 onPostExecute() 中的 googleMap 对象无法访问。 请确保 googleMap 是全局声明的。

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

【讨论】:

    【解决方案2】:

    试试这个

    //  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));
    

    【讨论】:

      【解决方案3】:

      我在这里看到了一些问题。

      正如@Raghunandan 提到的,您无法从 doInBackground() 更新 UI,因此您无法从那里添加标记。但是,您可以在此处创建 MarkerOptions 对象,然后将它们附加到您的 postExecute/或托管 Google Maps 的 Activity 中的 GoogleMap。

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

      MarkerOptions markerOptions = new MarkerOptions();
                      markerOptions.position(res)
                      .setTitle(restaurantName)
                      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                      googleMap.addMarker(markerOptions);
      

      【讨论】:

        猜你喜欢
        • 2017-11-05
        • 1970-01-01
        • 2016-03-16
        • 2010-10-11
        • 1970-01-01
        • 2019-11-08
        • 2015-08-18
        • 1970-01-01
        相关资源
        最近更新 更多