Я успешно интегрировал метки и полигоны KML в свое приложение для Android, но значки пользовательских маркеров не отображаются.
Видя, что это определено в KMLStyle
.Любой способ создать пользовательский KMLStyle
, который не только для чтения или другие решения?
Прикрепленный код, который я использую, может использоваться любой файл KML с пользовательским значком, но я не могу получить доступ к getIconURL (), а также кажется, что только для чтения я не могу использовать setIconURL ().
private class DownloadKmlFile extends AsyncTask<String, Void, byte[]> {
private final String mUrl;
public DownloadKmlFile(String url) {
mUrl = url;
}
protected byte[] doInBackground(String... params) {
try {
InputStream is = new URL(mUrl).openStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
while ((nRead = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
buffer.flush();
return buffer.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(byte[] byteArr) {
try {
KmlLayer kmlLayer = new KmlLayer(mMap, new ByteArrayInputStream(byteArr),
getApplicationContext());
kmlLayer.addLayerToMap();
Log.d("IconURL", ((KmlPlacemark)(kmlLayer.getPlacemarks().iterator().next())).getInlineStyle().getIconUrl());
kmlLayer.setOnFeatureClickListener(new KmlLayer.OnFeatureClickListener() {
@Override
public void onFeatureClick(Feature feature) {
/*Toast.makeText(KmlDemoActivity.this,
"Feature clicked: " + feature.getId(),
Toast.LENGTH_SHORT).show();*/
}
});
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}