Android 百度地图 最新SDK v3.4.0 基础地图加标记点图层和信息图层
发布日期:2022-02-14 23:02:38 浏览次数:50 分类:技术文章

本文共 4703 字,大约阅读时间需要 15 分钟。

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

转载地址:https://blog.csdn.net/fei900724/article/details/45726443 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android TextView相关
下一篇:两个布局之间加横线(例如两个textview之间)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月17日 18时05分11秒