标签:android
GoogleMap开发,做个小结,网上很少关于这个的资料,刚学习时,头疼了半天,贴出代码,供大家参考
1、布局文件main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/map_layout_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0.5dip"
class="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>
public class MapActivity extends FragmentActivity {
private GoogleMap map;
private SupportMapFragment mapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControls();
initMap();
location(application.getLatitude(), application.getLongitude());
displayAllLocation();
}
private void initControls() {
FragmentManager manager = getSupportFragmentManager();
mapFragment = (SupportMapFragment) manager
.findFragmentById(R.id.map_layout_map);
map = mapFragment.getMap();
}
/**
* Initialize the map
*/
private void initMap() {
try {
map.clear();
map.setMyLocationEnabled(true);
map.setIndoorEnabled(true);
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// map.setTrafficEnabled(true);
map.setOnMapLongClickListener(onMapLongClickListener);
// mark视图标记点击事件
map.setOnMarkerClickListener(onMarkerClikcListener);
} catch (Exception e) {
}
}
/**
* 定位
*
*
*/
public void location(double lat, double lng) {
try {
LatLng latLng = new LatLng(lat, lng);
map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
map.moveCamera(CameraUpdateFactory.zoomTo(10));
} catch (Exception e) {
CommonHelper.log(this.getClass().getName(),
"searchLocation:" + e.getMessage());
}
}
private void displayAllLocation() {
try {
map.clear();
LatLng at = null;
if (entity.getLat() != 0.0 || entity.getLng() != 0.0) {
MarkerOptions options = new MarkerOptions();
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory
.fromResource(R.drawable.ic_map_loaction);
options.icon(bitmapDescriptor);
LatLng latlng = new LatLng(entity.getLat(), entity.getLng());
options.position(latlng);
options.visible(true);
Marker marker=map.addMarker(options);
at = latlng;
map.moveCamera(CameraUpdateFactory.newLatLng(at));
map.moveCamera(CameraUpdateFactory.zoomTo(10));
}
// map.clear();
} catch (Exception e) {
CommonHelper.log(this.getClass().getName(), "displayAllLocation:"
+ e.getMessage());
}
}
private OnMarkerClickListener onMarkerClikcListener = new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
MapInforWindow info = new MapInforWindow(MapActivity.this);
map.setInfoWindowAdapter(info);
return false;
}
};
}
3、MapInforWindow
public class MapWOInforWindow implements InfoWindowAdapter{
private Context context;
public MapWOInforWindow(Context context ) {
this.context = context;
}
@Override
public View getInfoContents(Marker arg0) {
return null;
}
@Override
public View getInfoWindow(Marker arg0) {
View view = LayoutInflater.from(context).inflate(
R.layout.map_wo_inforwindow_layout, null);
TextView tvTitle=(TextView)view.findViewById(R.id.map_wo_infowindow_layout_tv_title);
tvTitle.setText("Titlte");
return view;
}
}
4、如果希望进地图页面,直接弹出InforWindow,可以这样写
private void displayAllLocation() {
try {
map.clear();
LatLng at = null;
if (entity.getLat() != 0.0 || entity.getLng() != 0.0) {
MarkerOptions options = new MarkerOptions();
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory
.fromResource(R.drawable.ic_map_loaction);
options.icon(bitmapDescriptor);
LatLng latlng = new LatLng(entity.getLat(), entity.getLng());
options.position(latlng);
options.visible(true);
Marker marker=map.addMarker(options);
at = latlng;
map.moveCamera(CameraUpdateFactory.newLatLng(at));
map.moveCamera(CameraUpdateFactory.zoomTo(10));
onMarkerClikcListener.onMarkerClick(marker);//加这句
}
// map.clear();
} catch (Exception e) {
CommonHelper.log(this.getClass().getName(), "displayAllLocation:"
+ e.getMessage());
}
}
private OnMarkerClickListener onMarkerClikcListener = new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
MapInforWindow info = new MapInforWindow(MapActivity.this);
map.setInfoWindowAdapter(info);
arg0.showInfoWindow();//加这句
return false;
}
};
标签:android
原文地址:http://blog.csdn.net/xiaoluoli88/article/details/39209101