जवाबों:
public GeoPoint getLocationFromAddress(String strAddress){
Geocoder coder = new Geocoder(this);
List<Address> address;
GeoPoint p1 = null;
try {
address = coder.getFromLocationName(strAddress,5);
if (address==null) {
return null;
}
Address location=address.get(0);
location.getLatitude();
location.getLongitude();
p1 = new GeoPoint((double) (location.getLatitude() * 1E6),
(double) (location.getLongitude() * 1E6));
return p1;
}
}
strAddress
पता रखने वाला एक तार है। address
चर परिवर्तित पतों रखती है।
GeoPoint
कि नए पुस्तकालयों में कोई वर्ग है। इसके बजाय उपयोग करें LatLng
। stackoverflow.com/a/27834110/2968401
अपडेट किए गए API के साथ Ud_an का समाधान
नोट : LatLng वर्ग Google Play Services का हिस्सा है।
अनिवार्य :
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
अद्यतन: यदि आपके पास एसडीके 23 और उससे अधिक का लक्ष्य है, तो सुनिश्चित करें कि आप स्थान के लिए रनटाइम अनुमति का ध्यान रखते हैं।
public LatLng getLocationFromAddress(Context context,String strAddress) {
Geocoder coder = new Geocoder(context);
List<Address> address;
LatLng p1 = null;
try {
// May throw an IOException
address = coder.getFromLocationName(strAddress, 5);
if (address == null) {
return null;
}
Address location = address.get(0);
p1 = new LatLng(location.getLatitude(), location.getLongitude() );
} catch (IOException ex) {
ex.printStackTrace();
}
return p1;
}
if(address.size() <1){//show a Toast}else{//put rest of code here}
यदि आप अपना पता Google मानचित्र में रखना चाहते हैं तो निम्नलिखित का उपयोग करने का आसान तरीका है
Intent searchAddress = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?q="+address));
startActivity(searchAddress);
या
यदि आपको अपने पते से लंबे समय तक प्राप्त करने की आवश्यकता है, तो निम्नलिखित के लिए Google स्थान एपि का उपयोग करें
निम्नलिखित की तरह HTTP कॉल की प्रतिक्रिया के साथ एक JSONObject देता है कि एक विधि बनाएँ
public static JSONObject getLocationInfo(String address) {
StringBuilder stringBuilder = new StringBuilder();
try {
address = address.replaceAll(" ","%20");
HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject = new JSONObject(stringBuilder.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonObject;
}
अब पास है कि JSONObject getLatLong () विधि निम्न की तरह
public static boolean getLatLong(JSONObject jsonObject) {
try {
longitute = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
latitude = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
} catch (JSONException e) {
return false;
}
return true;
}
मुझे आशा है कि यह आपको दूसरों को nd करने में मदद करता है .. !! धन्यवाद..!!
निम्न कोड google apiv2 के लिए काम करेगा:
public void convertAddress() {
if (address != null && !address.isEmpty()) {
try {
List<Address> addressList = geoCoder.getFromLocationName(address, 1);
if (addressList != null && addressList.size() > 0) {
double lat = addressList.get(0).getLatitude();
double lng = addressList.get(0).getLongitude();
}
} catch (Exception e) {
e.printStackTrace();
} // end catch
} // end if
} // end convertAddress
जहां पता स्ट्रिंग है (123 परीक्षण Rd सिटी स्टेट ज़िप) जिसे आप LatLng में बदलना चाहते हैं।
इस तरह आप अक्षांश और देशांतर का पता लगा सकते हैं जहाँ हमने मानचित्र पर क्लिक किया है।
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if (event.getAction() == 1)
{
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return false;
}
यह अच्छा काम करता है।
स्थान का पता प्राप्त करने के लिए हम जियोकोडर वर्ग का उपयोग कर सकते हैं।
ऊपर कंधा समस्या का उत्तर:
यह "java.io.IOException सेवा उपलब्ध नहीं है" फेंकता है। मैंने पहले ही उन अनुमति दे दी है और इसमें पुस्तकालय शामिल है ... मुझे मानचित्र दृश्य मिल सकता है ... यह जियोकोड पर IOException को फेंकता है ...
मैंने सिर्फ कोशिश के बाद एक पकड़ IOException जोड़ दी और इसने समस्या को हल कर दिया
catch(IOException ioEx){
return null;
}
Geocoder coder = new Geocoder(this);
List<Address> addresses;
try {
addresses = coder.getFromLocationName(address, 5);
if (addresses == null) {
}
Address location = addresses.get(0);
double lat = location.getLatitude();
double lng = location.getLongitude();
Log.i("Lat",""+lat);
Log.i("Lng",""+lng);
LatLng latLng = new LatLng(lat,lng);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
googleMap.addMarker(markerOptions);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,12));
} catch (IOException e) {
e.printStackTrace();
}
public void goToLocationFromAddress(String strAddress) {
//Create coder with Activity context - this
Geocoder coder = new Geocoder(this);
List<Address> address;
try {
//Get latLng from String
address = coder.getFromLocationName(strAddress, 5);
//check for null
if (address != null) {
//Lets take first possibility from the all possibilities.
try {
Address location = address.get(0);
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
//Animate and Zoon on that map location
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
} catch (IndexOutOfBoundsException er) {
Toast.makeText(this, "Location isn't available", Toast.LENGTH_SHORT).show();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}