Java GoogleAPI添加了,但MapActivity变得不可见
我对googlemap应用程序有一个小问题,我想用它来处理我的Eclipse,我已经更新了所有Elipse ADT,下载了GoogleAPI,但是我仍然从IDE得到一个错误,我的HelloWorld应用程序要从中扩展的MapActivity无法解析为一个类型。我是否缺少一些重要的导入或设置,需要对Eclipse本身执行这些导入或设置才能使其正常工作Java GoogleAPI添加了,但MapActivity变得不可见,java,android,eclipse,google-maps,eclipse-plugin,Java,Android,Eclipse,Google Maps,Eclipse Plugin,我对googlemap应用程序有一个小问题,我想用它来处理我的Eclipse,我已经更新了所有Elipse ADT,下载了GoogleAPI,但是我仍然从IDE得到一个错误,我的HelloWorld应用程序要从中扩展的MapActivity无法解析为一个类型。我是否缺少一些重要的导入或设置,需要对Eclipse本身执行这些导入或设置才能使其正常工作 public class HelloGoogleMapActivity extends MapActivity { /** Called w
public class HelloGoogleMapActivity extends MapActivity {
/** Called when the activity is first created. */
@override
protected boolean isRoundDisplayed()
{
return false;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapv=(MapView)findViewById(R.id.mapview);
mapv.setBuildInZoomControls(true);
}
}
另外,第一个“@override”关键字被报告为非法,我不知道为什么
[更新]
所有的答案都是正确的。最正确的是下面的评论。谢谢你的代码剪辑。酷 使用以下代码供您使用…当我尝试显示地图时,此代码工作正常…更改
代码中需要
public class GoogleMapsActivity extends MapActivity implements LocationListener{
/** Called when the activity is first created. */
MapView mapView;
MapController mc;
GeoPoint p;
String add = "";
double lattitude ;
double longitude;
String selectedprofile;
AudioManager am;
Button search;
EditText placeSearch;
class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.pushpin2);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
add="";
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
p.getLatitudeE6() / 1E6,
p.getLongitudeE6() / 1E6, 1);
lattitude=p.getLatitudeE6() / 1E6;
longitude=p.getLongitudeE6() / 1E6;
if (addresses.size() > 0)
{
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();
i++)
add += addresses.get(0).getAddressLine(i) + "\n";
}
Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}
else {
return false;
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent=getIntent();
setResult(RESULT_OK, intent);
mapView = (MapView) findViewById(R.id.mapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
mc.setCenter(p);
mc.setZoom(17);
//---Add a location marker---
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
//mapView.invalidate();
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this);
}
公共类GoogleMapsActivity扩展MapActivity实现LocationListener{
/**在首次创建活动时调用*/
地图视图;
地图控制器;
地质点p;
字符串add=“”;
双格;
双经度;
字符串选择配置文件;
音频经理am;
按钮搜索;
编辑文本位置搜索;
类MapOverlay扩展了com.google.android.maps.Overlay
{
@凌驾
公共布尔绘制(画布、地图视图、地图视图、,
布尔阴影(长时)
{
super.draw(画布、地图视图、阴影);
//---将地质点转换为屏幕像素---
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
//---添加标记---
位图bmp=BitmapFactory.decodeResource(
getResources(),R.drawable.pushpin2);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
返回true;
}
@凌驾
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{
加上“”;
//---当用户抬起手指时---
如果(event.getAction()==1){
地理点p=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
地理编码器地理编码器=新地理编码器(
getBaseContext(),Locale.getDefault();
试一试{
列表地址=geoCoder.getFromLocation(
p、 getLatitudeE6()/1E6,
p、 getLongitudeE6()/1E6,1);
lattitude=p.GetLattitudee6()/1E6;
经度=p.getLongitudeE6()/1E6;
如果(地址.size()>0)
{
对于(int i=0;ifor@Override exception jst change once javacompiler from your project properties…JDK Compliance 1.6到1.5,thn再次将其设置为1.6…我面临着同样的问题…这是一些JDK构建项目的bcz…或eclipse问题
和地图问题
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.google.android.maps.MapView
android:id="@+id/showmap"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:apiKey="@string/mapkey"
android:clickable="true" />
</RelativeLayout>
ApplicationManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="Andro Integration"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<uses-library android:name="com.google.android.maps" />
<!-- <activity -->
<!-- </activity> -->
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.manit.HelloGoogleMaps2"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloGoogleMaps2"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
java
package com.manit.hellogoglemaps2;
导入java.util.List;
导入android.graphics.drawable.drawable;
导入android.os.Bundle;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapView;
导入com.google.android.maps.Overlay;
导入com.google.android.maps.OverlayItem;
公共类HelloLogleMaps2扩展了MapActivity{
/**首次创建活动时调用。*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView MapView=(MapView)findViewById(R.id.MapView);
mapView.SetBuilTinZoomControl(真);
List mapOverlays=mapView.getOverlays();
Drawable Drawable=this.getResources().getDrawable(R.Drawable.icon);
HelloItemizedOverlay itemizedoverlay=新HelloItemizedOverlay(可绘制,此);
地质点=新的地质点(30443769,-91158458);
OverlayItem OverlayItem=新的OverlayItem(指向“嗨”,“我在印度!”);
地质点2=新的地质点(1738581278480667);
OverlayItem overlayitem2=新的OverlayItem(第2点,“嗨!”,“我在印度的艾哈迈达巴德!”);
itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.addOverlay(overlayitem2);
添加(itemizedoverlay);
}
@凌驾
受保护的布尔值isRouteDisplayed()
{
返回false;
} }
HelloItemizeOverlay.java
package com.manit.HelloGoogleMaps2;
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<OverlayItem>{
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
// TODO Auto-generated constructor stub
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public void addOverlay(OverlayItem overlay)
{
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i)
{
return mOverlays.get(i);
}
@Override
public int size()
{
return mOverlays.size();
}
@Override
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;
}
}
package com.manit.hellogoglemaps2;
导入java.util.ArrayList;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.OverlayItem;
公共类HelloItemizeOverlay扩展了ItemizeOverlay{
private ArrayList mOverlays=new ArrayList();
私有上下文;
公共HelloItemizeOverlay(可绘制的defaultMarker,上下文){
//TODO自动生成的构造函数存根
super(boundCenterBottom(defaultMarker));
mContext=上下文;
}
公共void addOverlay(OverlayItem overlay)
{
添加(覆盖);
填充();
}
@凌驾
受保护的OverlayItem createItem(int i)
{
返回mOverlays.get(i);
}
@凌驾
公共整数大小()
{
返回mOverlays.size();
}
@凌驾
受保护的布尔onTap(整数索引)
{
OverlayItem item=mOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(mContext);
setTitle(item.getTitle());
setMessage(item.getSnippet());
dialog.show();
返回true;
}
}
Androidmanifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="Andro Integration"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<uses-library android:name="com.google.android.maps" />
<!-- <activity -->
<!-- </activity> -->
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.manit.HelloGoogleMaps2"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloGoogleMaps2"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0Y2GRNdvsKsNO5cbkNKYcht3_0ASApwak-Q19Fg"
/>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloGoogleMaps!</string>
<string name="app_name">Hello,GoogleMaps</string>
<string name="mapskey">0Y2GRNdvsKsNO5cbkNKYcht3_0ASApwak-Q19Fg</string>
</resources>
你好,世界,你好!
你好,谷歌地图
0y2grndvsno5cbknky