【问题标题】:Adding markers to a map in Android在 Android 中向地图添加标记
【发布时间】:2017-01-20 17:35:41
【问题描述】:

我有一个从输入流形成的 KML 层:

private KmlLayer layer;
inputStream = new URL("urlHERE").openStream();
layer = new KmlLayer(mMap, inputStream, getApplicationContext());

我想遍历该层中的每个标记,并检查它是否在我当前位置的一定距离内,并且只有在它存在时才显示它。

这是我目前用来获取标记的纬度/经度的代码。

for (KmlPlacemark placemark: layer.getPlacemarks()) {


            String s = placemark.getGeometry().getGeometryObject().toString();
            Log.d("placemarks",s);
            String start = "(";
            String end = ")";
            String latlngvalue = s.substring(s.indexOf(start)+1,s.lastIndexOf(end));
            String[] strngs = latlngvalue.split(",");
            double placemarkerLat = Double.parseDouble(strngs[0]);
            double placemarkerLong = Double.parseDouble(strngs[2]);
            markerLocation.setLatitude(placemarkerLat);
            markerLocation.setLongitude(placemarkerLong);

我想要做的是在 ArrayList 中添加每个标记的信息,如果它们在用户的一定距离内,然后将标记添加到地图上。

【问题讨论】:

    标签: java android kml marker clplacemark


    【解决方案1】:

    检查此行

    currLocationMarker = mGoogleMap.addMarker(markerOptions); //你的答案在这里

     @Override
     public void onLocationChanged(Location location) {
    
        mGoogleMap.clear();
        mHashMap.clear();
    
        allMarkersLists.clear();
        favouriteGpList.clear();
    
        //place marker at current position
        //mGoogleMap.clear();
        if (currLocationMarker != null) {
            currLocationMarker.remove();
        }
    
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        latLng = new LatLng(location.getLatitude(), location.getLongitude());
    
        markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).draggable(true);
        currLocationMarker = mGoogleMap.addMarker(markerOptions); //YOUR ANSWER HERE
    
        mHashMap.put(currLocationMarker, 0);
    
        mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11));
        mGoogleMap.setMyLocationEnabled(true);
    
        getMapPin();
    
        //If you only need one location, unregister the listener
        LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 2014-09-22
      • 2019-03-07
      • 1970-01-01
      • 2019-05-22
      • 2019-06-11
      相关资源
      最近更新 更多