2014-01-07 96 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"); 

} 

我覺得你的問題將得到解決。

相關問題