Получить широту и долготу, используя пин-код на картах Google
У меня есть требование для загрузки местоположения на карте Google, учитывая пин-код или код города. Я пытался использовать метод Geocoder, чтобы найти широту и долготу, используя данный адрес. Это работает, когда указывается местоположение или область, но не работает для пин-кода (в частности, Индии). Есть ли какой-либо способ или способ найти широту и долготу заданной области с помощью пин-кода.
Это специфично для карты, которая будет загружена на Android с использованием карты.
Код, который я написал, имеет вид:
package com.example.geocodingexample;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
public class MainActivity extends MapActivity {
MapView mapView;
MapController mapController;
GeoPoint p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapview);
mapController = mapView.getController();
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.setZoom(14);
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocationName("karnataka",
1);
String add = "";
if (addresses.size() > 0) {
p = new GeoPoint((int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mapController.animateTo(p);
mapView.invalidate();
Log.i("latitude obtained", String.valueOf(p.getLatitudeE6()));
Log.i("longitude obtained", String.valueOf(p.getLongitudeE6()));
Toast.makeText(this, "lat obtained", Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
2 ответа
Это работает, когда вы увеличиваете количество местоположений в сигнатуре метода.
getFromLocationName("karnataka",
5);
это даст вам широту и долготу. Пример: -
public void findLocationName()
{
try {
Geocoder gcd = new Geocoder(this, Locale.getDefault());
List<Address> addresses;
addresses = gcd.getFromLocationName("110002",5);
for(int i=0;i<addresses.size();i++){
Log.e("","in loop");
Log.e("","lat :,,,,,,,,,,,,,"+addresses.get(i).getLatitude()+" long............"+addresses.get(i).getLongitude());
Toast.makeText(this, "lat : "+addresses.get(i).getLatitude(),1).show();
Toast.makeText(this, "long : "+addresses.get(i).getLongitude(),1).show();
}
}
catch (IOException e) {e.printStackTrace();}
}
Для Индии это не будет работать по Pincode.
Но попробуйте этот альтернативный метод. Вы можете добавить дополнительные аргументы, такие как "Near=", возможно, вы можете добавить индийские штаты в запрос и заставить его работать.
Это может сработать, но я не уверен. Повеселись