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>
2、Acivity中
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;
}
};