2014-01-07 51 views
0

我是新开发的Android开发人员,目前我试图让我的应用程序在按下按钮后将制造商放置在当前位置。 @SuppressLint(“NewApi”) 公共类MainActivity扩展Activity实现LocationListener { GoogleMap map;按下按钮后在Google Maps API上放置标记

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
.getMap(); 

map.setMyLocationEnabled(true); 

map.setPadding(0,200,0,0); 

} 

@Override 
public void onLocationChanged(Location location) { 

MarkerOptions mp = new MarkerOptions(); 

mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 

mp.title("my position"); 

} 

@Override 
public void onProviderDisabled(String provider) { 
// TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
// TODO Auto-generated method stub 

} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
// TODO Auto-generated method stub 

回答

0

尝试通过替换此代码。

public class MainActivity extends Activity implements LocationListener { 
    GoogleMap map; 
    Button button; 
    MarkerOptions mp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button = (Button) findViewById(R.id.button_id); 
     LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.setMyLocationEnabled(true); 
     map.setPadding(0,200,0,0); 

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

       mp.title("my position"); 

       map.addMarker(mp); 
      } 

     } 
    } 
    @Override 
    public void onLocationChanged(Location location) { 
     mp = new MarkerOptions(); 
     mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
     mp.title("my position"); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

} 
+0

非常感谢,我没想到会有这么快的回应。当我输入这段代码时,Eclipse似乎对map.addMarker(mp)后的第二个括号有问题; 我确定我也有正确数量的大括号。 – user3166143

+0

button.setOnClickListener(新View.OnClickListener(){ 公共无效的onClick(视图v){ mp.title( “我的位置”); map.addMarker(MP);} }); } – user3166143

2

目前它只是下降标记,每隔一段时间。

=>因为您在onLocationChanged()里面调用map.addMarker(mp);方法。

+1

Oho您已经给出答案。我非常尊重你。我多次阅读你的博客。我很高兴见到你。我投你的答案。这是我的尊重。 –

+0

非常感谢。我已经做了这个编辑,但是我仍然在map.addMarker(mp)后面的第二个括号中存在问题; 你能帮忙吗?我无法注意到它为什么会发生。 – user3166143

+0

再次忘记完成');'将按钮添加到按钮后。 –

0

删除map.addMarker(mp)onLocationChanged()方法,因为它每次触发位置更改事件时都会将标记添加到地图。

1

请替换代码

@Override 
public void onLocationChanged(Location location) { 
    MarkerOptions mp = new MarkerOptions(); 
    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
    mp.title("my position"); 
    map.addMarker(mp); 
} 

@Override 
public void onLocationChanged(Location location) { 
    MarkerOptions mp = new MarkerOptions(); 
    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
    mp.title("my position"); 

} 

我觉得你的问题将得到解决。

相关问题