Jon*_*itu 7 android google-maps google-maps-android-api-2
我正在尝试在用户点击地图时添加标记.我正在使用SupportMapFragment内部ActionBarActivity.但是地图没有响应,此外,map.setMapType()操作无效.
这是我的代码:
private GoogleMap map;
private Marker marker;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ActionBarActivity activity = (ActionBarActivity) getActivity();
activity.getSupportActionBar().setTitle(R.string.select_location);
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.map, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d("Map","On view created");
map = getMap();
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
map.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
Log.d("Map","Map clicked");
marker.remove();
drawMarker(point);
}
});
...
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null){
//PLACE THE INITIAL MARKER
drawMarker(new LatLng(location.getLatitude(),location.getLongitude()));
}
}
Run Code Online (Sandbox Code Playgroud)
Logcat显示"on view created"消息,地图用标记显示当前位置,因此代码的最后部分正在执行.但是onMapClickListener由于它不起作用而被覆盖或者某种东西,并且地图不是卫星.
有谁能够帮我?
jos*_*das 15
如果你有扩展的SupportMapFragment,你可以简单地这样做:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ActionBarActivity activity = (ActionBarActivity) getActivity();
activity.getSupportActionBar().setTitle(R.string.select_location);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
map = getMap();
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
map.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
Log.d("Map","Map clicked");
marker.remove();
drawMarker(point);
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,如果不使用自定义布局,则调用getMap()onActivityCreated并且inflater.inflate(R.layout.map, container, false)不需要.
你甚至不需要map.xml布局!
您正在扩展,SupportMapFragment但是您正在为另一个MapView(不是SupportMapFragment默认情况下绑定的那个)充气,这就是您没有在地图中查看更改的原因.因为你是默认View获得的,getMap()但你正在查看另一个.查看有关getMap()的文档:
Run Code Online (Sandbox Code Playgroud)public final GoogleMap getMap ()获取与此片段包装的视图关联的基础GoogleMap.
希望能帮助到你 ;)
| 归档时间: |
|
| 查看次数: |
16434 次 |
| 最近记录: |