0

Android用のGoogleマップで住所による機能検索を行うためのこのコードがあります。Gingerbread エミュレーターで実行しましたが、動作しません。しかし、エクレアで試してみるとうまくいきました。最小 SDK を 3 に設定し、Android Google API レベル 9 のプロジェクト ビルド ターゲットを設定しました。どこに問題があるのか​​教えてもらえますか? ありがとう。

public class ReverseGeocoding extends MapActivity
{

    btnSearch.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v) 
        {


    String addressInput = adress.getText().toString();
            try 
            {
                List<Address> foundAdresses = gc.getFromLocationName(addressInput, 5);

                //fail to find the address
                if (foundAdresses.size() == 0)
                {
                    Dialog locationError = new AlertDialog.Builder(
                            ReverseGeocoding.this).setIcon(0).setTitle(
                            "WARNING").setPositiveButton(R.string.OK, null)
                            .setMessage("no location found").create();
                            locationError.show();
                }
                //if get the address
                else 
                {
                    for (int i = 0; i < foundAdresses.size(); ++i) 
                    {
                        Address x = foundAdresses.get(i);
                        lat = x.getLatitude();
                        lon = x.getLongitude();
                    }                   
                    navigateToLocation((lat * 1E6), (lon * 1E6), lat, lon, myMap);
                }
            }
            catch (Exception e)
            {
            }
        }
    });
}

//marking location
protected void navigateToLocation(double latitude, double longitude, final double lat2, final double lon2, MapView myMap)
{
    GeoPoint p = new GeoPoint((int) latitude, (int) longitude);

    Drawable icon = getResources().getDrawable(R.drawable.marker);
    icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon
            .getIntrinsicHeight());

    MyItemizedOverlay overlay = new MyItemizedOverlay(icon);
    OverlayItem item = new OverlayItem(p, "My Location", null);
    overlay.addItem(item);

    myMap.getOverlays().add(overlay);
    myMap.getController().animateTo(p);
    myMap.postInvalidate(); 

    myMap.displayZoomControls(true);
    myMap.getController().setZoom(15);
    myMap.setBuiltInZoomControls(true);

    MapController mc = myMap.getController();
    mc.animateTo(p);
    int zoomlevel = myMap.getMaxZoomLevel();
    mc.setZoom(zoomlevel - 1);
    myMap.setSatellite(false);  

    });
}

private GeoPoint getPoint(double lat, double lon) 
{
    return(new GeoPoint((int)(lat*1E6),(int)(lon*1E6)));
}   

@Override
protected boolean isRouteDisplayed() 
{
    return false;
}

}

4

2 に答える 2

0

アクティビティを宣言するときに、アプリケーションでライブラリを宣言します。

"<" uses-library android:name="com.google.android.maps" "/>"

「<>」から引用符を削除することに注意してください。

于 2013-01-25T10:27:28.893 に答える
0
uses-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"
Declare the permission in manifest first
于 2013-01-22T12:03:14.760 に答える