简体   繁体   English

如何从Android上的地址获取经度和纬度?

[英]How to get latitude and longitude from address on Android?

I am beginner in Android and I am working to create the Google Map which is able to mark the specific location from address. 我是Android的初学者,我正在努力创建一个能够从地址标记特定位置的Google Map。

For now, my following code is able to mark "empire state building" but nothing others..:< I want to know how to get latitude and longitude from street address or full address, and mark it on the map. 现在,我的下面的代码能够标记“帝国大厦”,但没有其他任何东西......:<我想知道如何从街道地址或完整地址获取纬度和经度,并在地图上标记它。

I modified the manifest file for supporting Google Map view like INTERNET and ACCESS_COARSE_LOCATION 我修改了清单文件以支持Google地图视图,例如INTERNET和ACCESS_COARSE_LOCATION

Thank you. 谢谢。

package cs2340.kiwi.HelloGoogleMaps;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.graphics.drawable.Drawable;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class HelloGoogleMapsActivity extends MapActivity {
    /** Called when the activity is first created. */
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);

    List<Overlay> mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
    HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);

    Geocoder coder = new Geocoder(HelloGoogleMapsActivity.this, Locale.getDefault());

    List<Address> address;
    String strAddress = "empire state building";
    GeoPoint p1 = new GeoPoint(0,0);
    Double latitude;
    Double longitude;
    MapController mc = mapView.getController();

    try {
        address = coder.getFromLocationName(strAddress,5);
        Address location = address.get(0);
        latitude = location.getLatitude() * 1E6;        
        longitude = location.getLongitude() * 1E6;

        p1 = new GeoPoint( latitude.intValue(),
                           longitude.intValue());

        mc.animateTo(p1);    
        mapView.invalidate();
    }
    catch (IOException e){}
    OverlayItem overlayitem2 = new OverlayItem(p1, "Hello", "not working");

    itemizedoverlay.addOverlay(overlayitem2);
    mapOverlays.add(itemizedoverlay);

}
}

Here is my another class 这是我的另一堂课

package cs2340.kiwi.HelloGoogleMaps;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay {

private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
      super(boundCenterBottom(defaultMarker));
      mContext = context;
    }

public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}

protected OverlayItem createItem(int i) {
      return mOverlays.get(i);
}

public int size() {
      return mOverlays.size();
}

protected boolean onTap(int index) {
      OverlayItem item = mOverlays.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
}

}

尝试地理编码服务。服务发送http请求,然后读取响应并在地图上放置标记。

http://maps.googleapis.com/maps/api/geocode/json?address=hyderabad&sensor=true_or_false

or 要么

http://maps.googleapis.com/maps/api/geocode/xml?address=hyderabad&sensor=true_or_false

use any one of the url just replace your desired address and have a network hit then it will return a list of related lat and long from google server. 使用任何一个网址只需替换您想要的地址并进行网络点击,然后它将从谷歌服务器返回相关的纬度和长度列表。

To get Latitude and Longitude from street address or full address do following: 要从街道地址或完整地址获取纬度和经度,请执行以下操作:

int maxResults = 5;
String address = "Example Road 15";

Geocoder geo = new Geocoder( context, Locale.getDefault() );
List<Address> addresses = geo.getFromLocationName( address, maxResults );

for ( Address a : adresses ) 
   map.addMarker( new MarkerOptions().position( new LatLng( a.getLatitude(), a.getLongitude() ) ).title( "Hello" ).snippet( "Description about me!" ) );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM