可以在android中顯示地圖視圖嗎?允許用戶選擇一個區域,例如一個國家或州?在MapView中選擇區域Android
澄清:
我希望讓用戶在地圖視圖中選擇一個國家,怎麼可能?
我不關心所選擇的國家是突出與否,我只在乎它被選中的國家檢索/觸摸/用戶標記
可以在android中顯示地圖視圖嗎?允許用戶選擇一個區域,例如一個國家或州?在MapView中選擇區域Android
澄清:
我希望讓用戶在地圖視圖中選擇一個國家,怎麼可能?
我不關心所選擇的國家是突出與否,我只在乎它被選中的國家檢索/觸摸/用戶標記
有一個方法,從地圖 how to get lat and long on touch event from google map?
獲得緯度,經度之後,你可以調用谷歌地理代碼API轉換這個緯度,經度到物理地址,
即
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
以上鍊接將返回JSON
{
"status": "OK",
"results": [ {
"types": street_address,
"formatted_address": "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
"address_components": [ {
"long_name": "275-291",
"short_name": "275-291",
"types": street_number
}, {
"long_name": "Bedford Ave",
"short_name": "Bedford Ave",
"types": route
}, {
"long_name": "New York",
"short_name": "New York",
"types": [ "locality", "political" ]
}, {
"long_name": "Brooklyn",
"short_name": "Brooklyn",
"types": [ "administrative_area_level_3", "political" ]
}, {
"long_name": "Kings",
"short_name": "Kings",
"types": [ "administrative_area_level_2", "political" ]
}, {
"long_name": "New York",
"short_name": "NY",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "United States",
"short_name": "US",
"types": [ "country", "political" ]
}, {
"long_name": "11211",
"short_name": "11211",
"types": postal_code
} ],
"geometry": {
"location": {
"lat": 40.7142298,
"lng": -73.9614669
},
"location_type": "RANGE_INTERPOLATED",
"viewport": {
"southwest": {
"lat": 40.7110822,
"lng": -73.9646145
},
"northeast": {
"lat": 40.7173774,
"lng": -73.9583193
}
}
}
},
... Additional results[] ...
現在,您可以解析JSON,並得到國家名城市名地區,州等等等等
或者另一種選擇是得到公正的國家代碼。
http://ws.geonames.org/countryCode?lat=25.03&lng=67.2
這將返回國家代碼PK =巴基斯坦 您可以得到國家代碼列表,或
請閱讀澄清 – Gautam 2012-08-08 10:03:19
一個解決方案,我知道的是,你可以標記特定區域通過地圖引腳並通過在地圖中延伸OverLay類來填充該區域,如下所示。希望這是有用的。
public class MapOverlay extends Overlay
{
private GeoPoint new_geopoint = null;
public MapOverlay(GeoPoint geoPoint)
{
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
super.draw(canvas, mapView, shadow);
Paint mPaint = new Paint();
mPaint.setDither(true);
mPaint.setStyle(Style.FILL_AND_STROKE);
mPaint.setColor(Color.RED);
mPaint.setAlpha(9);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(2);
Path path = new Path();
Projection projection = mapView.getProjection();
for(int j = 0; j < geoArrayist.size(); j++)
{
Iterator<GeoPoint> it = geoArrayist.iterator();
while(it.hasNext())
{
GeoPoint arrayListGeoPoint = it.next();
Point currentScreenPoint = new Point();
projection.toPixels(arrayListGeoPoint, currentScreenPoint);
if(j == 0)
path.moveTo(currentScreenPoint.x, currentScreenPoint.y);
else
path.lineTo(currentScreenPoint.x, currentScreenPoint.y);
}
}
// old_geopoint = new_geopoint;
canvas.drawPath(path, mPaint);
}
}
謝謝,但請檢查澄清 – Gautam 2012-08-08 10:00:18
選擇意味着你想標記特定區域或個別區域? – Braj 2012-08-08 09:52:25
ya允許用戶將其標記並獲取該信息,以便我可以做一些有用的工作 – Gautam 2012-08-08 09:53:07
好吧,沒有辦法突出顯示一個國家,您必須親自編寫代碼來爲每個國家劃定邊界線,而不是這將成爲蛋糕:p – 2012-08-08 10:16:52