如题所述
ããå¦ææç®åä¸äºLBSæ¹é¢ççåºç¨ï¼å¯è½ç¨å°å°åä¸ç»çº¬åº¦çäºç¸è½¬æ¢ãandroid.location.Geocoderç±»æä¾äºæ¤åè½ãå®é
ä¸ï¼Geocoderæ¢æä¾äºåå转æ¢ï¼ä¹æä¾äºåå转æ¢ââå®å¯ä»¥è·åå°å并è¿åç»çº¬åº¦ï¼ä¹å¯ä»¥å°ç»çº¬åº¦å¯¹è½¬æ¢ä¸ºä¸ç»å°åã
ããå¯ä»¥éè¿åç§æ¹å¼æ¥æè¿°ä½ç½®ãä¾å¦ï¼getFromLocationName() æ¹æ³å¯ä»¥è·å¾å°æ¹çå称ãç©çå°ååæºåºç¼å·ï¼æè 该ä½ç½®çæµè¡å称ãè¿äºæ¹æ³æä¾äºä¸ä¸ªå°åå表(List<Address>)ï¼èä¸æ¯ä¸ä¸ªå°åãå 为è¿äºæ¹æ³è¿åå¤ä¸ªç»æï¼å®æ¹å»ºè®®æ好æä¾1~5çmaxResults å¼æ¥éå¶ç»æéï¼ä¸é¢æ们æ¥çä¸ä¸ªæ¥è¯¢å°åçä¾åï¼åä¸æ¬¡ä¸æ ·æ们å¾èªå·±å®ä¹ä¸ä¸ªç±»ç»§æ¿MapActivityã
ããæ们å¯ä»¥è¯çåä¸ä¸ªè¾å ¥å°åè¿åç»çº¬åº¦çç¨åºã
ããå¨XMLä¸å®ä¹ä¸ä¸ªè¾å ¥æ¡ï¼ä¸ä¸ªæé®ï¼ä¸ä¸ªMapView.
ããç¨æ·è¾å ¥ä¸ä¸ªå°åç¹å»æé®ï¼è¿åç»çº¬åº¦ã
ããè¿æ¯æé®çOnCliclkæ¹æ³ï¼å ¶ä»çç¥ã
ããpublic void onClick(View v) {
ããtry {
ããEditText loc = (EditText) findViewById(R.id.location);
ããString locationName = loc.getText().toString();
ããList<Address> addressList = geocoder.getFromLocationName(
ããlocationName, 5);
ããif (addressList != null && addressList.size() > 0) {
ããint lat = (int) (addressList.get(0).getLatitude() * 1E6);
ããint lng = (int) (addressList.get(0).getLongitude() * 1E6);
ãã
ããGeoPoint pt = new GeoPoint(lat, lng);
ããmapView.getController().setZoom(15);
ããmapView.getController().setCenter(pt);
ãã}
ãã} catch (Exception e) {
ããe.printStackTrace();
ãã}
ãã}
ããè¿æ ·åæè§æ¯æ²¡ä»ä¹éï¼å®é æµè¯æ¶åç°ï¼å¦æè¾å ¥âtian an menâå°±å¯ä»¥è¿åç»çº¬åº¦ï¼ä½è¾å ¥â天å®é¨âå°±ä¼æå¼å¸¸ï¼è¯´æå¡ä¸å¯ä»¥ç¨ä»ä¹çï¼ç½ä¸ä¹æéå°è¿é®é¢ç人ï¼eoeä¸è¾¹ä¹æï¼ä½é½ä¸äºäºä¹äºãå½å¤ä¹æè¾å ¥è±ææå¼å¸¸çï¼http://code.google.com/p/android/issues/detail?id=8816ï¼
ããå¨21楼åç°äºæ°çæ¹æ³ï¼å®å ¨æ¾å¼äºgetFromLocationNameæ¹æ³ï¼ç¨çæ¯The Google Geocoding API
ããè¿ä¸ªAPIæ´åå¯ä»¥ä»£æ¿å åçæ¹æ³ï¼è¾å ¥å°åè¿åJSONæè XMLæ ¼å¼çæ件ï¼å å«ä¸å¯¹å°åä¿¡æ¯ã
ããXML为http://maps.googleapis.com/maps/api/geocode/xml?address=å京交é大å¦&sensor=false
ããJSON为http://maps.googleapis.com/maps/api/geocode/json?address=å京交é大å¦&sensor=false
ããç°å¨éè¦èªå·±åä¸ä¸ªéææ¹æ³å»è§£æXMLæè JSONï¼ä»¥JSON为ä¾ï¼
ããpublic class MapUtility {
ããpublic static JSONObject getLocationInfo(String address) {
ããHttpGet httpGet = new HttpGet("http://maps.google."
ãã+ "com/maps/api/geocode/json?address=" + address
ãã+ "&sensor=false");
ããHttpClient client = new DefaultHttpClient();
ããHttpResponse response;
ããStringBuilder stringBuilder = new StringBuilder();
ããtry {
ããresponse = client.execute(httpGet);
ããHttpEntity entity = response.getEntity();
ããInputStream stream = entity.getContent();
ããint b;
ããwhile ((b = stream.read()) != -1) {
ããstringBuilder.append((char) b);
ãã}
ãã} catch (ClientProtocolException e) {
ããe.printStackTrace();
ãã} catch (IOException e) {
ããe.printStackTrace();
ãã}
ããJSONObject jsonObject = new JSONObject();
ããtry {
ããjsonObject = new JSONObject(stringBuilder.toString());
ãã} catch (JSONException e) {
ããe.printStackTrace();
ãã}
ããreturn jsonObject;
ãã}
ãã// converts JSONObject into a GeoPoint.
ããpublic static GeoPoint getGeoPoint(JSONObject jsonObject) {
ããDouble lon = new Double(0);
ããDouble lat = new Double(0);
ããtry {
ããlon = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
ãã.getJSONObject("geometry").getJSONObject("location")
ãã.getDouble("lng");
ããlat = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
ãã.getJSONObject("geometry").getJSONObject("location")
ãã.getDouble("lat");
ãã} catch (JSONException e) {
ããe.printStackTrace();
ãã}
ããreturn new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
ãã}
ãã}
ãã第ä¸ä¸ªæ¹æ³æ ¹æ®å°ååå¾JSONï¼ç¬¬äºä¸ªæ¹æ³ä»JSONæååæ ã
ããæåç¨åºææå¦ä¸ï¼
ããAndroidå°åä¸ç»çº¬åº¦è½¬æ¢
ããæåï¼åºè¯¥èèå¨ä¸åäºUI线ç¨ç线ç¨ä¸æ§è¡å°çç¼ç æä½ãå¾ææ¾ï¼è¿é¡¹æä½å¾èæ¶ï¼èä¸ä½ ä¸å®ä¸å¸æUIå¨è¿è¡å°çç¼ç æ¶åé¡¿ï¼å¦æåé¡¿ä¼é»å¡æ´ä¸ªç¨æ·çé¢ãå½å¨æ§è¡ä¸äºèæ¶çæä½çæ¶åï¼ä¸è½åæ¶å°åå äºä»¶ï¼å æ¬ç¨æ·çé¢éç»äºä»¶ãä»ç¨æ·çè§åº¦æ¥çï¼åºç¨ç¨åºçä¸å»åææäºãæ´ç³ç³çæ¯ï¼å¦æé»å¡åºç¨ç¨åºçæ¶é´è¿é¿ï¼Androidä¼åç¨æ·æ示 ä¸äºä¿¡æ¯ï¼å³æå¼ä¸ä¸ªâåºç¨ç¨åºæ²¡æç¸åºï¼application not respondingï¼â ç对è¯æ¡ã
ããå¯ä»¥éè¿åç§æ¹å¼æ¥æè¿°ä½ç½®ãä¾å¦ï¼getFromLocationName() æ¹æ³å¯ä»¥è·å¾å°æ¹çå称ãç©çå°ååæºåºç¼å·ï¼æè 该ä½ç½®çæµè¡å称ãè¿äºæ¹æ³æä¾äºä¸ä¸ªå°åå表(List<Address>)ï¼èä¸æ¯ä¸ä¸ªå°åãå 为è¿äºæ¹æ³è¿åå¤ä¸ªç»æï¼å®æ¹å»ºè®®æ好æä¾1~5çmaxResults å¼æ¥éå¶ç»æéï¼ä¸é¢æ们æ¥çä¸ä¸ªæ¥è¯¢å°åçä¾åï¼åä¸æ¬¡ä¸æ ·æ们å¾èªå·±å®ä¹ä¸ä¸ªç±»ç»§æ¿MapActivityã
ããæ们å¯ä»¥è¯çåä¸ä¸ªè¾å ¥å°åè¿åç»çº¬åº¦çç¨åºã
ããå¨XMLä¸å®ä¹ä¸ä¸ªè¾å ¥æ¡ï¼ä¸ä¸ªæé®ï¼ä¸ä¸ªMapView.
ããç¨æ·è¾å ¥ä¸ä¸ªå°åç¹å»æé®ï¼è¿åç»çº¬åº¦ã
ããè¿æ¯æé®çOnCliclkæ¹æ³ï¼å ¶ä»çç¥ã
ããpublic void onClick(View v) {
ããtry {
ããEditText loc = (EditText) findViewById(R.id.location);
ããString locationName = loc.getText().toString();
ããList<Address> addressList = geocoder.getFromLocationName(
ããlocationName, 5);
ããif (addressList != null && addressList.size() > 0) {
ããint lat = (int) (addressList.get(0).getLatitude() * 1E6);
ããint lng = (int) (addressList.get(0).getLongitude() * 1E6);
ãã
ããGeoPoint pt = new GeoPoint(lat, lng);
ããmapView.getController().setZoom(15);
ããmapView.getController().setCenter(pt);
ãã}
ãã} catch (Exception e) {
ããe.printStackTrace();
ãã}
ãã}
ããè¿æ ·åæè§æ¯æ²¡ä»ä¹éï¼å®é æµè¯æ¶åç°ï¼å¦æè¾å ¥âtian an menâå°±å¯ä»¥è¿åç»çº¬åº¦ï¼ä½è¾å ¥â天å®é¨âå°±ä¼æå¼å¸¸ï¼è¯´æå¡ä¸å¯ä»¥ç¨ä»ä¹çï¼ç½ä¸ä¹æéå°è¿é®é¢ç人ï¼eoeä¸è¾¹ä¹æï¼ä½é½ä¸äºäºä¹äºãå½å¤ä¹æè¾å ¥è±ææå¼å¸¸çï¼http://code.google.com/p/android/issues/detail?id=8816ï¼
ããå¨21楼åç°äºæ°çæ¹æ³ï¼å®å ¨æ¾å¼äºgetFromLocationNameæ¹æ³ï¼ç¨çæ¯The Google Geocoding API
ããè¿ä¸ªAPIæ´åå¯ä»¥ä»£æ¿å åçæ¹æ³ï¼è¾å ¥å°åè¿åJSONæè XMLæ ¼å¼çæ件ï¼å å«ä¸å¯¹å°åä¿¡æ¯ã
ããXML为http://maps.googleapis.com/maps/api/geocode/xml?address=å京交é大å¦&sensor=false
ããJSON为http://maps.googleapis.com/maps/api/geocode/json?address=å京交é大å¦&sensor=false
ããç°å¨éè¦èªå·±åä¸ä¸ªéææ¹æ³å»è§£æXMLæè JSONï¼ä»¥JSON为ä¾ï¼
ããpublic class MapUtility {
ããpublic static JSONObject getLocationInfo(String address) {
ããHttpGet httpGet = new HttpGet("http://maps.google."
ãã+ "com/maps/api/geocode/json?address=" + address
ãã+ "&sensor=false");
ããHttpClient client = new DefaultHttpClient();
ããHttpResponse response;
ããStringBuilder stringBuilder = new StringBuilder();
ããtry {
ããresponse = client.execute(httpGet);
ããHttpEntity entity = response.getEntity();
ããInputStream stream = entity.getContent();
ããint b;
ããwhile ((b = stream.read()) != -1) {
ããstringBuilder.append((char) b);
ãã}
ãã} catch (ClientProtocolException e) {
ããe.printStackTrace();
ãã} catch (IOException e) {
ããe.printStackTrace();
ãã}
ããJSONObject jsonObject = new JSONObject();
ããtry {
ããjsonObject = new JSONObject(stringBuilder.toString());
ãã} catch (JSONException e) {
ããe.printStackTrace();
ãã}
ããreturn jsonObject;
ãã}
ãã// converts JSONObject into a GeoPoint.
ããpublic static GeoPoint getGeoPoint(JSONObject jsonObject) {
ããDouble lon = new Double(0);
ããDouble lat = new Double(0);
ããtry {
ããlon = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
ãã.getJSONObject("geometry").getJSONObject("location")
ãã.getDouble("lng");
ããlat = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
ãã.getJSONObject("geometry").getJSONObject("location")
ãã.getDouble("lat");
ãã} catch (JSONException e) {
ããe.printStackTrace();
ãã}
ããreturn new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
ãã}
ãã}
ãã第ä¸ä¸ªæ¹æ³æ ¹æ®å°ååå¾JSONï¼ç¬¬äºä¸ªæ¹æ³ä»JSONæååæ ã
ããæåç¨åºææå¦ä¸ï¼
ããAndroidå°åä¸ç»çº¬åº¦è½¬æ¢
ããæåï¼åºè¯¥èèå¨ä¸åäºUI线ç¨ç线ç¨ä¸æ§è¡å°çç¼ç æä½ãå¾ææ¾ï¼è¿é¡¹æä½å¾èæ¶ï¼èä¸ä½ ä¸å®ä¸å¸æUIå¨è¿è¡å°çç¼ç æ¶åé¡¿ï¼å¦æåé¡¿ä¼é»å¡æ´ä¸ªç¨æ·çé¢ãå½å¨æ§è¡ä¸äºèæ¶çæä½çæ¶åï¼ä¸è½åæ¶å°åå äºä»¶ï¼å æ¬ç¨æ·çé¢éç»äºä»¶ãä»ç¨æ·çè§åº¦æ¥çï¼åºç¨ç¨åºçä¸å»åææäºãæ´ç³ç³çæ¯ï¼å¦æé»å¡åºç¨ç¨åºçæ¶é´è¿é¿ï¼Androidä¼åç¨æ·æ示 ä¸äºä¿¡æ¯ï¼å³æå¼ä¸ä¸ªâåºç¨ç¨åºæ²¡æç¸åºï¼application not respondingï¼â ç对è¯æ¡ã
温馨提示:答案为网友推荐,仅供参考