2012-04-14 10 views
1

私はAndroidの初心者です。私はGoogleマップを作成しています。このマップは、住所から特定の場所をマークすることができます。今のところ、私の次のコードは、「エンパイアステートビルディング」が、何も他の人をマークすることができますAndroidのアドレスから緯度と経度を取得するにはどうすればよいですか?

..:< 私は住所や完全な住所から緯度と経度を取得し、地図上にマークする方法を知りたいです。

私は

ありがとうINTERNETなどのGoogleマップビューをサポートするためのマニフェストファイルを変更し、ACCESS_COARSE_LOCATION。ここで

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); 

} 
} 

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; 
} 

} 
+0

ソリューションはここにある[ここ] [1] を[1]:のhttp:// stackoverflow.com/q/16686436/1858599 –

答えて

1

が応答を読んで、地図上のマーカーを配置し、サービスへのHTTPリクエストgeocoding service .Sendを試してみて、私の別のクラスです。

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

または

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

ちょうどあなたの希望のアドレスを交換し、ネットワークを持っているURLのいずれかを使用し、それは、関連する緯度と長いGoogleのサーバーからのリストを返しますヒット。住所や完全な住所から緯度と経度を取得するには

1

は、次の操作を行います。ご質問の

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!")); 
関連する問題