您的位置:首页 > 移动开发 > Android开发

Android 百度地图 最新SDK v3.4.0 基础地图加标记点图层和信息图层

2015-05-14 21:30 435 查看
package com.example.locationapp;

import java.util.List;

import com.baidu.mapapi.SDKInitializer;

import com.baidu.mapapi.map.BaiduMap;

import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;

import com.baidu.mapapi.map.BitmapDescriptor;

import com.baidu.mapapi.map.BitmapDescriptorFactory;

import com.baidu.mapapi.map.InfoWindow;

import com.baidu.mapapi.map.MapStatus;

import com.baidu.mapapi.map.MapStatusUpdate;

import com.baidu.mapapi.map.MapStatusUpdateFactory;

import com.baidu.mapapi.map.MapView;

import com.baidu.mapapi.map.Marker;

import com.baidu.mapapi.map.MarkerOptions;

import com.baidu.mapapi.map.OverlayOptions;

import com.baidu.mapapi.model.LatLng;

import com.baidu.mapapi.model.LatLngBounds;

import com.example.bin.Info;

import android.os.Bundle;

import android.app.Activity;

import android.graphics.Point;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;

public class MainActivity extends Activity {
MapView mMapView = null; 
private BaiduMap mBaiduMap;
private View popview;
InfoWindow mInfoWindow;  //信息图层
//bean类
List<Info> infos;
Info info; 
LatLng latlng;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());  
setContentView(R.layout.activity_main);
   mMapView = (MapView) findViewById(R.id.bmapView); 
   mBaiduMap = mMapView.getMap();

//设定中心点坐标 

        LatLng cenpt = new LatLng(34.75557,113.798519); 

        //定义地图状态

        MapStatus mMapStatus = new MapStatus.Builder()

        .target(cenpt)

        .zoom(18)

        .build();

        //定义MapStatusUpdate对象,以便描述地图状态将要发生的变化

        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);

        //改变地图状态

        mBaiduMap.setMapStatus(mMapStatusUpdate);

/* 

 //单个地点标志添加
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.location_arrows);
   OverlayOptions options = new MarkerOptions().position(cenpt).icon(bitmap);
mBaiduMap.addOverlay(options);

*/

//添加多个点,从bean得到数据
info = new Info();
infos = info.infos;
for (int i=0;i<infos.size();i++) {
System.out.println("------"+infos.size());
latlng = new LatLng(infos.get(i).getLatitude(), infos.get(i).getLongitude()); 
System.out.println("========"+latlng);
BitmapDescriptor bitmap2 = BitmapDescriptorFactory.fromResource(R.drawable.maker);
   OverlayOptions options2 = new MarkerOptions().position(latlng).icon(bitmap2);
mBaiduMap.addOverlay(options2);
}

//多个标记点的点击事件
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {

@Override
public boolean onMarkerClick(Marker marker) {

final LatLng ll = marker.getPosition();  
Log.e("标签", "--!" + ll);  

                Point p = mBaiduMap.getProjection().toScreenLocation(ll);  

                Log.e("标签", "--!" + p.x + " , " + p.y);  

                p.y -= 47;  

                LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p); 

              

              //两种生产infowindow的方法  // (1)  

             /* popview = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_layout, null);

        TextView popText = ((TextView)popview.findViewById(R.id.location_tips));

        popText.setText("弹窗图层");*/

                

           //  (2) //生成一个TextView用户在地图中显示InfoWindow  

                TextView location = new TextView(getApplicationContext());  

                location.setBackgroundResource(R.drawable.popup2);  

                location.setPadding(5, 5, 5, 5);  

                location.setTextColor(getResources().getColor(android.R.color.black));

                location.setText("5.14-15:32");  

                

        mInfoWindow = new InfoWindow(location, ll, -30); 

                //为弹出的InfoWindow添加点击事件  

                

                //显示InfoWindow  

                mBaiduMap.showInfoWindow(mInfoWindow);  

                

              //为弹出的InfoWindow添加点击事件  

                location.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//隐藏InfoWindow  

                        mBaiduMap.hideInfoWindow(); 
}
});
return true;
}
});

/*

//弹窗图层  
popview = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_layout, null);
TextView popText = ((TextView)popview.findViewById(R.id.location_tips));
popText.setText("弹窗图层");
mInfoWindow = new InfoWindow(popview, cenpt, -30);  
//点击marker标志之后弹出图层
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {

@Override
public boolean onMarkerClick(Marker arg0) {
//显示InfoWindow  
mBaiduMap.showInfoWindow(mInfoWindow);
return false;
}
});
//点击弹窗图层后InfoWindow消失
popview.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mBaiduMap.hideInfoWindow();
}
});  */
}
@Override  

    protected void onDestroy() {  

        super.onDestroy();  

        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  

        mMapView.onDestroy();  

    }  

    @Override  

    protected void onResume() {  

        super.onResume();  

        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  

        mMapView.onResume();  

        }  

    @Override  

    protected void onPause() {  

        super.onPause();  

        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  

        mMapView.onPause();  

        } 
}

源码下载地址  http://download.csdn.net/detail/fei900724/8701055
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐