Android Google Maps移动摄像头 [英] Android Google Maps Move Camera
本文介绍了Android Google Maps移动摄像头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在用Android实施Google Maps.我正在使用框架布局来查看地图,并且可以正常工作.但是,我想使用移动相机来将地图聚焦到特定位置.但是,我无法使用我的代码来实现它.
I've been implementing Google Maps with Android. I'm using frame layout to view the map, and it works. However, I wanna use the move camera in order to focus the map to a specific location. However, i can't implement it using my code.
MainActivity.java
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
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
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;
}
}
请,您将如何使用此代码实现它.
Please, how will you implement it with this code.
推荐答案
这应该做到:
LatLng latLng = // whatever
float zoom = // whatever
mapfragment.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
这篇关于Android Google Maps移动摄像头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文