2013-10-10 32 views
1

嗨,所有我想製作一個pin ..問題是我無法找到與我的問題相關的來源。我已經檢查了commonsware的主題,但沒有一個涉及可拖動的pin。其實他們其中之一,但它是與地圖v1不v2相關。那麼我怎麼能做一個銷發生在用戶當前位置,然後可以拖動到地圖上的任何地方,當他們點擊的引腳..android如何在地圖上製作可拖動的pin v2

這裏是具有銷(標記),並且得到用戶位置的示例代碼..

public class MainActivity extends AbstractMapActivity implements 
OnNavigationListener, OnInfoWindowClickListener, 
OnMyLocationChangeListener { 
private static final String STATE_NAV="nav"; 
private static final int[] MAP_TYPE_NAMES= { R.string.normal, 
    R.string.hybrid, R.string.satellite, R.string.terrain }; 
private static final int[] MAP_TYPES= { GoogleMap.MAP_TYPE_NORMAL, 
    GoogleMap.MAP_TYPE_HYBRID, GoogleMap.MAP_TYPE_SATELLITE, 
    GoogleMap.MAP_TYPE_TERRAIN }; 
private GoogleMap map=null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

if (readyToGo()) { 
    setContentView(R.layout.activity_main); 

    SupportMapFragment mapFrag= 
     (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 

    initListNav(); 

    map=mapFrag.getMap(); 

    if (savedInstanceState == null) { 
    CameraUpdate center= 
     CameraUpdateFactory.newLatLng(new LatLng(40.76793169992044, 
               -73.98180484771729)); 
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(15); 

    map.moveCamera(center); 
    map.animateCamera(zoom); 
    } 

    addMarker(map, 40.748963847316034, -73.96807193756104, 
      R.string.un, R.string.united_nations); 
    addMarker(map, 40.76866299974387, -73.98268461227417, 
      R.string.lincoln_center, 
      R.string.lincoln_center_snippet); 
    addMarker(map, 40.765136435316755, -73.97989511489868, 
      R.string.carnegie_hall, R.string.practice_x3); 
    addMarker(map, 40.70686417491799, -74.01572942733765, 
      R.string.downtown_club, R.string.heisman_trophy); 

    map.setInfoWindowAdapter(new PopupAdapter(getLayoutInflater())); 
    map.setOnInfoWindowClickListener(this); 

    map.setMyLocationEnabled(true); 
    map.setOnMyLocationChangeListener(this); 
} 
} 

@Override 
public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
map.setMapType(MAP_TYPES[itemPosition]); 

return(true); 
} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
super.onSaveInstanceState(savedInstanceState); 

savedInstanceState.putInt(STATE_NAV, 
          getSupportActionBar().getSelectedNavigationIndex()); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
super.onRestoreInstanceState(savedInstanceState); 

getSupportActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_NAV)); 
} 

@Override 
public void onInfoWindowClick(Marker marker) { 
Toast.makeText(this, marker.getTitle(), Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onMyLocationChange(Location lastKnownLocation) { 
Log.d(getClass().getSimpleName(), 
     String.format("%f:%f", lastKnownLocation.getLatitude(), 
        lastKnownLocation.getLongitude())); 
} 

private void initListNav() { 
ArrayList<String> items=new ArrayList<String>(); 
ArrayAdapter<String> nav=null; 
ActionBar bar=getSupportActionBar(); 

for (int type : MAP_TYPE_NAMES) { 
    items.add(getString(type)); 
} 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    nav= 
     new ArrayAdapter<String>(
           bar.getThemedContext(), 
           android.R.layout.simple_spinner_item, 
           items); 
} 
else { 
    nav= 
     new ArrayAdapter<String>(
           this, 
           android.R.layout.simple_spinner_item, 
           items); 
} 

nav.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
bar.setListNavigationCallbacks(nav, this); 
} 

private void addMarker(GoogleMap map, double lat, double lon, 
        int title, int snippet) { 
map.addMarker(new MarkerOptions().position(new LatLng(lat, lon)) 
           .title(getString(title)) 
           .snippet(getString(snippet))); 
    } 
} 

回答

2

所有你需要的文件就在這裏

https://developers.google.com/maps/documentation/android/

所有你需要做的是設置該標記可拖動

marker.setDraggable(true); 
+1

...並且由於OP似乎在使用我的代碼示例,因此下面是一個演示可拖動標記的示例:https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Drag – CommonsWare

+0

羞恥在我.. commonsware有拖動教程,雖然我已經嘗試過了,我不能拖放標記我不知道爲什麼我可能無法點擊「其實」..太糟糕了,我的錯誤感謝所有 – regeme

相關問題