2015-01-24 3 views
4

Я использую Google Maps с Android. Я использую рамку для просмотра карты, и она работает. Тем не менее, я хочу использовать камеру перемещения, чтобы сфокусировать карту в определенном месте. Однако я не могу реализовать его, используя свой код.Android Google Maps Move Camera

MainActivity.java

public class MainActivity extends Activity { 

private MainMapFragement mapFragment; 
private HashMap<Marker, EventInfo> eventMarkerMap; 
EventInfo firstEventInfo; 
Marker firstMarker; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_activity); 
    mapFragment = new MainMapFragement(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.add(R.id.map, mapFragment); 
    ft.commit(); 

} 

@Override 
protected void onStart() { 
    super.onStart(); 
    setUpEventSpots(); 
} 



private void setUpEventSpots() { 
    // I'm going to make 2 EventInfo objects and place them on the map 
    eventMarkerMap = new HashMap<Marker, EventInfo>(); 
    EventInfo firstEventInfo = new EventInfo(new LatLng(7.190708000000000000, 125.455340999999980000), "Right now - event", new Date(), "Party"); 

    Marker firstMarker= mapFragment.placeMarker(firstEventInfo); 


    eventMarkerMap.put(firstMarker, firstEventInfo); 


    mapFragment.getMap().setInfoWindowAdapter(new InfoWindowAdapter() { 

     private final View window = getLayoutInflater().inflate(R.layout.custom_window, null); 

     @Override 
     public View getInfoWindow(Marker marker) { 
      EventInfo eventInfo = eventMarkerMap.get(marker); 

      String title = marker.getTitle(); 
      TextView txtTitle = ((TextView) window.findViewById(R.id.txtInfoWindowTitle)); 
      if (title != null) { 
       // Spannable string allows us to edit the formatting of the text. 
       SpannableString titleText = new SpannableString(title); 
       titleText.setSpan(new ForegroundColorSpan(Color.RED), 0, titleText.length(), 0); 
       txtTitle.setText(titleText); 
      } else { 
       txtTitle.setText(""); 
      } 

      TextView txtType = ((TextView) window.findViewById(R.id.txtInfoWindowEventType)); 
      if(eventInfo.getType() != null) 
       txtType.setText(eventInfo.getType()); 

      return window; 
     } 

     @Override 
     public View getInfoContents(Marker marker) { 
      //this method is not called if getInfoWindow(Marker) does not return null 
      return null; 
     } 
    }); 

} 

} 

EventInfo.java

public class EventInfo { 

private LatLng latLong; 
private String name; 
private Date someDate; 
private String type; 

public EventInfo(LatLng latLong, String name, Date someDate, String type) { 
    super(); 
    this.latLong = latLong; 
    this.name = name; 
    this.someDate = someDate; 
    this.type = type; 
} 

public LatLng getLatLong() { 
    return latLong; 
} 
public void setLatLong(LatLng latLong) { 
    this.latLong = latLong; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public Date getSomeDate() { 
    return someDate; 
} 
public void setSomeDate(Date someDate) { 
    this.someDate = someDate; 
} 

public String getType() { 
    return type; 
} 

public void setType(String type) { 
    this.type = type; 
} 

} 

MapFragment.java

public class MainMapFragement extends MapFragment { 

public Marker placeMarker(EventInfo eventInfo) { 
    Marker m = getMap().addMarker(new MarkerOptions() 
     .position(eventInfo.getLatLong()) 
     .title(eventInfo.getName())); 

    return m; 
} 
} 

Пожалуйста, как вы реализовать его с этим кодом.

ответ

9

Это следует сделать это:

LatLng latLng = // whatever 
float zoom = // whatever 
mapfragment.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));