Google 具有悬停效果的 geojsonlayer 多边形使用 android
Google geojsonlayer polygons with hover effects using android
我对使用 android google map.i 为 geojson 层中的多边形制作悬停效果感到困惑 map.i 已经从网络服务器恢复了 geojson 详细信息以显示上面的内容map.i 想在用户手指在 it.below 上移动时为 geojson 层中的多边形制作悬停效果 我发布了我的代码如何使用 google [=22= 实现 geojson 层] 你提前。
强文本
class DownloadGeoJsonFile 扩展了 AsyncTask
{
protected void onPreExecute()
{
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected GeoJsonLayer doInBackground(String... params)
{
try
{
// Open a stream from the URL
InputStream stream = new URL(params[0]).openStream();
String line;
StringBuilder result = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
while ((line = reader.readLine()) != null)
{
// Read and save each line of the stream
result.append(line);
}
// Close the stream
reader.close();
stream.close();
return new GeoJsonLayer(mMap, new JSONObject(result.toString()));
} catch (IOException e) {
Log.e(mLogTag, "GeoJSON file could not be read");
} catch (JSONException e) {
Log.e(mLogTag, "GeoJSON file could not be converted to a JSONObject");
}
return null;
}
@Override
protected void onPostExecute(GeoJsonLayer layer) {
Log.e("sundar","success");
progressBar.setVisibility(View.GONE);
if (layer != null) {
Log.e("sundar","successsuccess");
addGeoJsonLayerToMap(layer);
}
}
}
private void retrieveFileFromUrl()
{
new DownloadGeoJsonFile().execute(getString(R.string.geojson_url2));
}
private void addGeoJsonLayerToMap(final GeoJsonLayer layer)
{
if (layer != null)
{
try
{
Log.e("sundar", "successsuccess");
layer.addLayerToMap();
final GeoJsonPolygonStyle style =layer.getDefaultPolygonStyle();
style.setStrokeColor(Color.BLACK);
style.setStrokeWidth(3F);
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(20.593683, 78.962883)));
layer.setOnFeatureClickListener(new GeoJsonLayer.GeoJsonOnFeatureClickListener() {
@Override
public void onFeatureClick(Feature feature)
{
Log.e("type",feature.getGeometry().getGeometryType().toString());
}
});
}
catch(Exception e)
{
Log.e("exception","exception occured");
}
}
}
最后我用下面的代码做到了。
private void addGeoJsonLayerToMap(final GeoJsonLayer layer)
{
if (layer != null)
{
try
{
Log.e("sundar", "successsuccess");
layer.addLayerToMap();
/*polygon style*/
final GeoJsonPolygonStyle style = layer.getDefaultPolygonStyle();
style.setStrokeColor(Color.BLACK);
style.setFillColor(Color.GRAY);
/* style.setFillColor(R.drawable.map_hover_button);*/
style.setStrokeWidth(3F);
/*its for setting markers with infowindow*/
for (GeoJsonFeature feature : layer.getFeatures())
{
GeoJsonPointStyle pointStyle=new GeoJsonPointStyle();
pointStyle.setTitle(feature.getProperty("Name"));
pointStyle.setIcon(BitmapDescriptorFactory.fromResource(R.mipmap.locpin));
feature.setPointStyle(pointStyle);
}
layer.setOnFeatureClickListener(newGeoJsonLayer.GeoJsonOnFeatureClickListener()
{
@Override
public void onFeatureClick(Feature feature)
{
Log.e("type",feature.getGeometry().getGeometryType().toString());
Toast toast=Toast.makeText(getApplicationContext(),feature.getProperty("Name"),Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
toast.cancel();
}
}, 500);
if(feature.getGeometry().getGeometryType().equalsIgnoreCase("Polygon")||feature.getGeometry().getGeometryType().equalsIgnoreCase("MultiPolygon")) {
if (coloredfeature != null)
{
GeoJsonPolygonStyle lineStringStyle = new GeoJsonPolygonStyle();
coloredfeature = (GeoJsonFeature) feature;
lineStringStyle.setFillColor(Color.GRAY);
lineStringStyle.setStrokeColor(Color.BLACK);
lineStringStyle.setStrokeWidth(3f);
lineStringFeature.setPolygonStyle(lineStringStyle);
}
GeoJsonPolygonStyle lineStringStyle = new GeoJsonPolygonStyle();
lineStringFeature = (GeoJsonFeature) feature;
coloredfeature = (GeoJsonFeature) feature;
lineStringStyle.setFillColor(Color.parseColor("#991A6659"));
lineStringStyle.setStrokeColor(Color.WHITE);
lineStringStyle.setStrokeWidth(2f);
lineStringFeature.setPolygonStyle(lineStringStyle);
}
}
});
}
catch(Exception e)
{
Log.e("exception","exception occured");
}
}
}
一个问题是我在单击 it.any 时无法获取多个多边形的属性。将不胜感激。
我对使用 android google map.i 为 geojson 层中的多边形制作悬停效果感到困惑 map.i 已经从网络服务器恢复了 geojson 详细信息以显示上面的内容map.i 想在用户手指在 it.below 上移动时为 geojson 层中的多边形制作悬停效果 我发布了我的代码如何使用 google [=22= 实现 geojson 层] 你提前。
强文本 class DownloadGeoJsonFile 扩展了 AsyncTask {
protected void onPreExecute()
{
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected GeoJsonLayer doInBackground(String... params)
{
try
{
// Open a stream from the URL
InputStream stream = new URL(params[0]).openStream();
String line;
StringBuilder result = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
while ((line = reader.readLine()) != null)
{
// Read and save each line of the stream
result.append(line);
}
// Close the stream
reader.close();
stream.close();
return new GeoJsonLayer(mMap, new JSONObject(result.toString()));
} catch (IOException e) {
Log.e(mLogTag, "GeoJSON file could not be read");
} catch (JSONException e) {
Log.e(mLogTag, "GeoJSON file could not be converted to a JSONObject");
}
return null;
}
@Override
protected void onPostExecute(GeoJsonLayer layer) {
Log.e("sundar","success");
progressBar.setVisibility(View.GONE);
if (layer != null) {
Log.e("sundar","successsuccess");
addGeoJsonLayerToMap(layer);
}
}
}
private void retrieveFileFromUrl()
{
new DownloadGeoJsonFile().execute(getString(R.string.geojson_url2));
}
private void addGeoJsonLayerToMap(final GeoJsonLayer layer)
{
if (layer != null)
{
try
{
Log.e("sundar", "successsuccess");
layer.addLayerToMap();
final GeoJsonPolygonStyle style =layer.getDefaultPolygonStyle();
style.setStrokeColor(Color.BLACK);
style.setStrokeWidth(3F);
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(20.593683, 78.962883)));
layer.setOnFeatureClickListener(new GeoJsonLayer.GeoJsonOnFeatureClickListener() {
@Override
public void onFeatureClick(Feature feature)
{
Log.e("type",feature.getGeometry().getGeometryType().toString());
}
});
}
catch(Exception e)
{
Log.e("exception","exception occured");
}
}
}
最后我用下面的代码做到了。
private void addGeoJsonLayerToMap(final GeoJsonLayer layer)
{
if (layer != null)
{
try
{
Log.e("sundar", "successsuccess");
layer.addLayerToMap();
/*polygon style*/
final GeoJsonPolygonStyle style = layer.getDefaultPolygonStyle();
style.setStrokeColor(Color.BLACK);
style.setFillColor(Color.GRAY);
/* style.setFillColor(R.drawable.map_hover_button);*/
style.setStrokeWidth(3F);
/*its for setting markers with infowindow*/
for (GeoJsonFeature feature : layer.getFeatures())
{
GeoJsonPointStyle pointStyle=new GeoJsonPointStyle();
pointStyle.setTitle(feature.getProperty("Name"));
pointStyle.setIcon(BitmapDescriptorFactory.fromResource(R.mipmap.locpin));
feature.setPointStyle(pointStyle);
}
layer.setOnFeatureClickListener(newGeoJsonLayer.GeoJsonOnFeatureClickListener()
{
@Override
public void onFeatureClick(Feature feature)
{
Log.e("type",feature.getGeometry().getGeometryType().toString());
Toast toast=Toast.makeText(getApplicationContext(),feature.getProperty("Name"),Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
toast.cancel();
}
}, 500);
if(feature.getGeometry().getGeometryType().equalsIgnoreCase("Polygon")||feature.getGeometry().getGeometryType().equalsIgnoreCase("MultiPolygon")) {
if (coloredfeature != null)
{
GeoJsonPolygonStyle lineStringStyle = new GeoJsonPolygonStyle();
coloredfeature = (GeoJsonFeature) feature;
lineStringStyle.setFillColor(Color.GRAY);
lineStringStyle.setStrokeColor(Color.BLACK);
lineStringStyle.setStrokeWidth(3f);
lineStringFeature.setPolygonStyle(lineStringStyle);
}
GeoJsonPolygonStyle lineStringStyle = new GeoJsonPolygonStyle();
lineStringFeature = (GeoJsonFeature) feature;
coloredfeature = (GeoJsonFeature) feature;
lineStringStyle.setFillColor(Color.parseColor("#991A6659"));
lineStringStyle.setStrokeColor(Color.WHITE);
lineStringStyle.setStrokeWidth(2f);
lineStringFeature.setPolygonStyle(lineStringStyle);
}
}
});
}
catch(Exception e)
{
Log.e("exception","exception occured");
}
}
}
一个问题是我在单击 it.any 时无法获取多个多边形的属性。将不胜感激。