今天,我们接着上一讲,上一讲我们把地图上界面自定义了一番,加上了按钮等一系列的控件,但是还没有给这些加上具体的功能,今天这一讲,主要是实现几种地图的切换,是否开启实时交通,通过自定义的按钮去控制地图的缩放,以及在地图上添加覆盖物及相关显示覆盖物的信息。

一、先给路况那个控件添加实时路况开关的功能,这个功能比较简单,就是通过一个API中的方法isTrafficEnabled()来判断是不是已经处于实时交通的打开状态,如果已经是打开了,当点击后就应该关闭。

 /*** @author mikyou* 是否打开实时交通* */private void switchRoadCondition() {if (myBaiduMap.isTrafficEnabled()) {//如果是开着的状态,当点击后,就会出关闭状态myBaiduMap.setTrafficEnabled(false);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_off);}else{//如果是的关闭的状态,当点击后,就会处于开启的状态myBaiduMap.setTrafficEnabled(true);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_on);}}

二、然后接着就是添加选择地图类型的功能,这里提供了3种类型的地图分别是:普通地图、卫星地图、热力地图。我是通过弹出一个选择的对话框来供用户选择不同类型的地图。

/*** @author mikyou* 选择地图的类型* */private void selectMapType() {AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.icon).setTitle("请选择地图的类型").setItems(types, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String select=types[which];if (select.equals("普通地图")) {myBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);}else if (select.equals("卫星地图")) {myBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);}else if (select.equals("热力地图(已关闭)")||select.equals("热力地图(已打开)")) {if(myBaiduMap.isBaiduHeatMapEnabled()) {myBaiduMap.setBaiduHeatMapEnabled(false);Toast.makeText(MainActivity.this, "热力地图已关闭", 0).show();types[which]="热力地图(已关闭)";}else {myBaiduMap.setBaiduHeatMapEnabled(true);Toast.makeText(MainActivity.this, "热力地图已打开", 0).show();types[which]="热力地图(已打开)";}}}}).show();}

三、给控制地图比例放大缩小控件加上,放大和缩小的功能。具体实现是这样的,设置一个全局的变量来表示实时的比例,然后通过点击放大和缩小的控件,来控制这个变量增加和减少,并实时将这个变量设置给创建地图状态对象的参数,从而实现实时控制放大和缩小地图。

 /*** @author zhongqihong* 放大地图的比例* */private void narrowMapScale() {current-=0.5f;MapStatusUpdate msu=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(msu);}/***@author zhongqihong*缩小地图的比例 * */private void expandMapScale() {current+=0.5f;MapStatusUpdate msu2=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(msu2);}

四、接着就是在地图添加覆盖物,并且给该覆盖物添加点击事件,点击后并且在底部显示出一个介绍该地点的图文介绍信息,和一个InfoWindow(该InfoWindow上显示着该地点的名称)。主要实现的思路是这样的,我们首先得创建一个bean来保存每一个覆盖物的详细信息。包括该覆盖物的经纬度,图片路径,覆盖物的名称等;实际这也就是相当于ListVIew中的每个Item的信息,而显示覆盖物信息只是分散的Item而已,每个覆盖物详细信息项都一样。所以写一个Bean可以更好地管理数据。我们有很多个覆盖物,那么可以创建一个bean类型的List集合存放着不同覆盖物对象,不同覆盖物处于地图中不同的位置,可以根据不同Bean中经纬度值构成的经纬度对象不同,只要拿到了经纬度对象,那么就可以在地图上唯一确定这个点,并且在这个点会显示一个自定义的图标。

 /*** @author mikyou* 初始化覆盖物信息数据* */private void initMarksData() {markInfoList=new ArrayList<MarkInfo>();markInfoList.add(new MarkInfo(32.079254, 118.787623, R.drawable.pic1, "英伦贵族小旅馆", "距离209米", 1888));markInfoList.add(new MarkInfo(32.064355, 118.787624, R.drawable.pic2, "沙井国际高级会所", "距离459米", 388));markInfoList.add(new MarkInfo(28.7487420000, 115.8748860000, R.drawable.pic4, "华东交通大学南区", "距离5米", 888));markInfoList.add(new MarkInfo(28.7534890000, 115.8767960000, R.drawable.pic3, "华东交通大学北区", "距离10米", 188));myBaiduMap.setOnMarkerClickListener(this);myBaiduMap.setOnMapClickListener(this);   }
 /*** @author Mikyou* 添加覆盖物* */private void addMapMarks() {initMarksData();myBaiduMap.clear();//先清除一下图层LatLng latLng=null;Marker marker=null;OverlayOptions options;myMarks=BitmapDescriptorFactory.fromResource(R.drawable.mark);//引入自定义的覆盖物图标,将其转化成一个BitmapDescriptor对象//遍历MarkInfo的List一个MarkInfo就是一个Markfor (int i = 0; i < markInfoList.size(); i++) {//经纬度对象latLng=new LatLng(markInfoList.get(i).getLatitude(), markInfoList.get(i).getLongitude());//需要创建一个经纬对象,通过该对象就可以定位到处于地图上的某个具体点//图标options=new MarkerOptions().position(latLng).icon(myMarks).zIndex(6);marker=(Marker) myBaiduMap.addOverlay(options);//将覆盖物添加到地图上Bundle bundle=new Bundle();//创建一个Bundle对象将每个mark具体信息传过去,当点击该覆盖物图标的时候就会显示该覆盖物的详细信息bundle.putSerializable("mark", markInfoList.get(i));marker.setExtraInfo(bundle);}MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latLng);//通过这个经纬度对象,地图就可以定位到该点myBaiduMap.animateMapStatus(msu);}

五、加上点击覆盖物的事件使得InfoWindow和底部的图文信息显示出来,原来底部图文信息是不显示的,当点击该覆盖物后,就会得到从上一步传来的一个Bundle对象,该Bundle对象实际上包括的就是当前被点击的覆盖物的Bean中所存的信息,然后可以通过Bean信息来更新底部图文信息UI布局(类似于ListView中的GetView方法),并给该布局设置是可见的。但是当我点击地图其他部分就必须隐藏该底部的图文信息,所以还得给该整个地图设置点击事件,当点击地图后,图文信息再次被隐藏。还有一个InfoWindow,InfoWindow就是指向当前覆盖物的介绍信息。所以它也需要Bean中信息,所以它也得获取Bundle对象,然后设置信息。当点击地图时它也需要被再次隐藏。

package com.mikyou.beans;import java.io.Serializable;public class MarkInfo implements Serializable{private double latitude;private double longitude;private int ImageId;private String name;private String distance;private int zanNum;public MarkInfo(double latitude, double longitude, int imageId,String name, String distance, int zanNum) {super();this.latitude = latitude;this.longitude = longitude;ImageId = imageId;this.name = name;this.distance = distance;this.zanNum = zanNum;}public MarkInfo() {super();}public double getLatitude() {return latitude;}public void setLatitude(double latitude) {this.latitude = latitude;}public double getLongitude() {return longitude;}public void setLongitude(double longitude) {this.longitude = longitude;}public int getImageId() {return ImageId;}public void setImageId(int imageId) {ImageId = imageId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDistance() {return distance;}public void setDistance(String distance) {this.distance = distance;}public int getZanNum() {return zanNum;}public void setZanNum(int zanNum) {this.zanNum = zanNum;}}
 /*** @author mikyou* 覆盖物的点击事件* */@Overridepublic boolean onMarkerClick(Marker marker) {Bundle bundle=  marker.getExtraInfo();MarkInfo MyMarker=(MarkInfo) bundle.getSerializable("mark");ImageView iv=(ImageView) markLayout.findViewById(R.id.mark_image);TextView distanceTv=(TextView) markLayout.findViewById(R.id.distance);TextView nameTv=(TextView) markLayout.findViewById(R.id.name);TextView zanNumsTv=(TextView) markLayout.findViewById(R.id.zan_nums);iv.setImageResource(MyMarker.getImageId());distanceTv.setText(MyMarker.getDistance()+"");nameTv.setText(MyMarker.getName());zanNumsTv.setText(MyMarker.getZanNum()+"");//初始化一个InfoWindowinitInfoWindow(MyMarker,marker);markLayout.setVisibility(View.VISIBLE);return true;}/***@author mikyou*初始化出一个InfoWindow* * */private void initInfoWindow(MarkInfo MyMarker,Marker marker) {// TODO Auto-generated method stubInfoWindow infoWindow;//InfoWindow中显示的View内容样式,显示一个TextViewTextView infoWindowTv=new TextView(MainActivity.this);infoWindowTv.setBackgroundResource(R.drawable.location_tips);infoWindowTv.setPadding(30, 20, 30, 50);infoWindowTv.setText(MyMarker.getName());infoWindowTv.setTextColor(Color.parseColor("#FFFFFF"));final LatLng latLng=marker.getPosition();Point p=myBaiduMap.getProjection().toScreenLocation(latLng);//将地图上的经纬度转换成屏幕中实际的点p.y-=47;//设置屏幕中点的Y轴坐标的偏移量LatLng ll=myBaiduMap.getProjection().fromScreenLocation(p);//把修改后的屏幕的点有转换成地图上的经纬度对象/*** @author mikyou* 实例化一个InfoWindow的对象* public InfoWindow(View view,LatLng position, int yOffset)通过传入的 view 构造一个 InfoWindow, 此时只是利用该view生成一个Bitmap绘制在地图中,监听事件由开发者实现。*   参数:* view - InfoWindow 展示的 view* position - InfoWindow 显示的地理位置* yOffset - InfoWindow Y 轴偏移量* */infoWindow=new InfoWindow(infoWindowTv, ll, 10);myBaiduMap.showInfoWindow(infoWindow);//显示InfoWindow}/*** @author zhongqihong* 给整个地图添加的点击事件* */@Overridepublic void onMapClick(LatLng arg0) {//表示点击地图其他的地方使得覆盖物的详情介绍的布局隐藏,但是点击已显示的覆盖物详情布局上,则不会消失,因为在详情布局上添加了Clickable=true//由于事件的传播机制,因为点击事件首先会在覆盖物布局的父布局(map)中,由于map是可以点击的,map则会把点击事件给消费掉,如果加上Clickable=true表示点击事件由详情布局自己处理,不由map来消费markLayout.setVisibility(View.GONE);myBaiduMap.hideInfoWindow();//隐藏InfoWindow}@Overridepublic boolean onMapPoiClick(MapPoi arg0) {return false;}

六、最后贴出该MainActivity源码:

package com.mikyou.maptest;import java.util.ArrayList;
import java.util.List;import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;
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.MapPoi;
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.mikyou.beans.MarkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ZoomControls;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.Point;public class MainActivity extends Activity implements OnClickListener,OnMapClickListener,OnMarkerClickListener{private MapView mapView=null;private BaiduMap myBaiduMap=null;//修改默认View相关private View defaultBaiduMapScaleButton,defaultBaiduMapLogo,defaultBaiduMapScaleUnit;//基本地图类型,实时交通,及覆盖物相关private ImageView mapRoad;private ImageView mapType;private String[] types={"普通地图","卫星地图","热力地图(已关闭)"};private float current;//放大或缩小的比例系数private ImageView expandMap;//放大地图控件private ImageView narrowMap;//缩小地图private ImageView addMarks;//添加覆盖物控件private BitmapDescriptor myMarks;private List<MarkInfo> markInfoList;private LinearLayout markLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mapView=(MapView) findViewById(R.id.map_view_test);initMapView();changeDefaultBaiduMapView();}/*** @author zhongqihong* 初始化地图的View* */private void initMapView() {registerAllIds();registerAllEvents();}private void registerAllIds() {mapRoad=(ImageView) findViewById(R.id.road_condition);mapType=(ImageView) findViewById(R.id.map_type);expandMap=(ImageView) findViewById(R.id.add_scale);narrowMap=(ImageView) findViewById(R.id.low_scale);addMarks=(ImageView) findViewById(R.id.map_marker);markLayout=(LinearLayout) findViewById(R.id.mark_layout);}private void registerAllEvents() {mapRoad.setOnClickListener(this);mapType.setOnClickListener(this);expandMap.setOnClickListener(this);narrowMap.setOnClickListener(this);addMarks.setOnClickListener(this);}/*** @author zhongqihong* 除去百度地图上的默认控件* */private void changeDefaultBaiduMapView() {changeInitialzeScaleView();//改变默认百度地图初始加载的地图比例//设置隐藏缩放和扩大的百度地图的默认的比例按钮for (int i = 0; i < mapView.getChildCount(); i++) {//遍历百度地图中的所有子View,找到这个扩大和缩放的按钮控件View,然后设置隐藏View即可View child=mapView.getChildAt(i);if (child instanceof ZoomControls) {defaultBaiduMapScaleButton=child;//该defaultBaiduMapScaleButton子View是指百度地图默认产生的放大和缩小的按钮,得到这个Viewbreak;}}defaultBaiduMapScaleButton.setVisibility(View.GONE);//然后将该View的Visiblity设为不存在和不可见,即隐藏defaultBaiduMapLogo =mapView.getChildAt(1);//该View是指百度地图中默认的百度地图的Logo,得到这个ViewdefaultBaiduMapLogo.setPadding(300, -10, 100, 100);//设置该默认Logo View的位置,因为这个该View的位置会影响下面的刻度尺单位View显示的位置mapView.removeViewAt(1);//最后移除默认百度地图的logo ViewdefaultBaiduMapScaleUnit=mapView.getChildAt(2);//得到百度地图的默认单位刻度的ViewdefaultBaiduMapScaleUnit.setPadding(100, 0, 115,200);//最后设置调整百度地图的默认单位刻度View的位置     }/*** @author zhongqihong* 改变默认初始化的地图的比例* */private void changeInitialzeScaleView() {myBaiduMap=mapView.getMap();//改变百度地图的放大比例,让首次加载地图就开始扩大到500米的距离,获得百度地图对象MapStatusUpdate factory=MapStatusUpdateFactory.zoomTo(15.0f);myBaiduMap.animateMapStatus(factory);       }/*** @author zhongqihong* 管理地图的生命周期* */@Overrideprotected void onPause() {mapView.onPause();super.onPause();}@Overrideprotected void onResume() {mapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {mapView.onDestroy();super.onDestroy();}//点击事件相关@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.road_condition://是否打开实时交通switchRoadCondition();break;case R.id.map_type://选择地图的类型selectMapType();break;case R.id.add_scale://放大地图比例expandMapScale();break;case R.id.low_scale://缩小地图比例narrowMapScale();break;case R.id.map_marker:addMapMarks();break;default:break;}}/*** @author Mikyou* 添加覆盖物* */private void addMapMarks() {initMarksData();myBaiduMap.clear();//先清除一下图层LatLng latLng=null;Marker marker=null;OverlayOptions options;myMarks=BitmapDescriptorFactory.fromResource(R.drawable.mark);//引入自定义的覆盖物图标,将其转化成一个BitmapDescriptor对象//遍历MarkInfo的List一个MarkInfo就是一个Markfor (int i = 0; i < markInfoList.size(); i++) {//经纬度对象latLng=new LatLng(markInfoList.get(i).getLatitude(), markInfoList.get(i).getLongitude());//需要创建一个经纬对象,通过该对象就可以定位到处于地图上的某个具体点//图标options=new MarkerOptions().position(latLng).icon(myMarks).zIndex(6);marker=(Marker) myBaiduMap.addOverlay(options);//将覆盖物添加到地图上Bundle bundle=new Bundle();//创建一个Bundle对象将每个mark具体信息传过去,当点击该覆盖物图标的时候就会显示该覆盖物的详细信息bundle.putSerializable("mark", markInfoList.get(i));marker.setExtraInfo(bundle);}MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latLng);//通过这个经纬度对象,地图就可以定位到该点myBaiduMap.animateMapStatus(msu);}/*** @author mikyou* 初始化覆盖物信息数据* */private void initMarksData() {markInfoList=new ArrayList<MarkInfo>();markInfoList.add(new MarkInfo(32.079254, 118.787623, R.drawable.pic1, "英伦贵族小旅馆", "距离209米", 1888));markInfoList.add(new MarkInfo(32.064355, 118.787624, R.drawable.pic2, "沙井国际高级会所", "距离459米", 388));markInfoList.add(new MarkInfo(28.7487420000, 115.8748860000, R.drawable.pic4, "华东交通大学南区", "距离5米", 888));markInfoList.add(new MarkInfo(28.7534890000, 115.8767960000, R.drawable.pic3, "华东交通大学北区", "距离10米", 188));myBaiduMap.setOnMarkerClickListener(this);myBaiduMap.setOnMapClickListener(this);   }/*** @author zhongqihong* 放大地图的比例* */private void narrowMapScale() {current-=0.5f;MapStatusUpdate msu=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(msu);}/***@author zhongqihong*缩小地图的比例 * */private void expandMapScale() {current+=0.5f;MapStatusUpdate msu2=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(msu2);}/*** @author mikyou* 选择地图的类型* */private void selectMapType() {AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.icon).setTitle("请选择地图的类型").setItems(types, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String select=types[which];if (select.equals("普通地图")) {myBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);}else if (select.equals("卫星地图")) {myBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);}else if (select.equals("热力地图(已关闭)")||select.equals("热力地图(已打开)")) {if(myBaiduMap.isBaiduHeatMapEnabled()) {myBaiduMap.setBaiduHeatMapEnabled(false);Toast.makeText(MainActivity.this, "热力地图已关闭", 0).show();types[which]="热力地图(已关闭)";}else {myBaiduMap.setBaiduHeatMapEnabled(true);Toast.makeText(MainActivity.this, "热力地图已打开", 0).show();types[which]="热力地图(已打开)";}}}}).show();}/*** @author mikyou* 是否打开实时交通* */private void switchRoadCondition() {if (myBaiduMap.isTrafficEnabled()) {//如果是开着的状态,当点击后,就会出关闭状态myBaiduMap.setTrafficEnabled(false);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_off);}else{//如果是的关闭的状态,当点击后,就会处于开启的状态myBaiduMap.setTrafficEnabled(true);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_on);}}/*** @author mikyou* 覆盖物的点击事件* */@Overridepublic boolean onMarkerClick(Marker marker) {Bundle bundle=  marker.getExtraInfo();MarkInfo MyMarker=(MarkInfo) bundle.getSerializable("mark");ImageView iv=(ImageView) markLayout.findViewById(R.id.mark_image);TextView distanceTv=(TextView) markLayout.findViewById(R.id.distance);TextView nameTv=(TextView) markLayout.findViewById(R.id.name);TextView zanNumsTv=(TextView) markLayout.findViewById(R.id.zan_nums);iv.setImageResource(MyMarker.getImageId());distanceTv.setText(MyMarker.getDistance()+"");nameTv.setText(MyMarker.getName());zanNumsTv.setText(MyMarker.getZanNum()+"");//初始化一个InfoWindowinitInfoWindow(MyMarker,marker);markLayout.setVisibility(View.VISIBLE);return true;}/***@author mikyou*初始化出一个InfoWindow* * */private void initInfoWindow(MarkInfo MyMarker,Marker marker) {// TODO Auto-generated method stubInfoWindow infoWindow;//InfoWindow中显示的View内容样式,显示一个TextViewTextView infoWindowTv=new TextView(MainActivity.this);infoWindowTv.setBackgroundResource(R.drawable.location_tips);infoWindowTv.setPadding(30, 20, 30, 50);infoWindowTv.setText(MyMarker.getName());infoWindowTv.setTextColor(Color.parseColor("#FFFFFF"));final LatLng latLng=marker.getPosition();Point p=myBaiduMap.getProjection().toScreenLocation(latLng);//将地图上的经纬度转换成屏幕中实际的点p.y-=47;//设置屏幕中点的Y轴坐标的偏移量LatLng ll=myBaiduMap.getProjection().fromScreenLocation(p);//把修改后的屏幕的点有转换成地图上的经纬度对象/*** @author mikyou* 实例化一个InfoWindow的对象* public InfoWindow(View view,LatLng position, int yOffset)通过传入的 view 构造一个 InfoWindow, 此时只是利用该view生成一个Bitmap绘制在地图中,监听事件由开发者实现。*   参数:* view - InfoWindow 展示的 view* position - InfoWindow 显示的地理位置* yOffset - InfoWindow Y 轴偏移量* */infoWindow=new InfoWindow(infoWindowTv, ll, 10);myBaiduMap.showInfoWindow(infoWindow);//显示InfoWindow}/*** @author zhongqihong* 给整个地图添加的点击事件* */@Overridepublic void onMapClick(LatLng arg0) {//表示点击地图其他的地方使得覆盖物的详情介绍的布局隐藏,但是点击已显示的覆盖物详情布局上,则不会消失,因为在详情布局上添加了Clickable=true//由于事件的传播机制,因为点击事件首先会在覆盖物布局的父布局(map)中,由于map是可以点击的,map则会把点击事件给消费掉,如果加上Clickable=true表示点击事件由详情布局自己处理,不由map来消费markLayout.setVisibility(View.GONE);myBaiduMap.hideInfoWindow();//隐藏InfoWindow}@Overridepublic boolean onMapPoiClick(MapPoi arg0) {return false;}
}

最后效果:

好了今天的百度第二讲就到这了

Demo2下载链接

浅谈百度地图的简单开发之实现基本地图的类型及覆盖物的添加(二)相关推荐

  1. 浅谈百度地图的简单开发之引入基本地图以及修改地图样式(一)

    今天,想给大家带来一个基于百度地图官方开放的API开发的高仿百度地图的Demo(还称不上是一个APP),基本实现了百度地图的几大核心功能,百度地图中的基本地图,百度地图的定位,百度地图的全景显示,百度 ...

  2. 浅谈百度地图的简单开发再续前缘之公交,地铁路线检索查询(六)

    关于百度地图的简单开发前段时间,写过一个小系列的博客关于百度地图的基本地图,定位,全景,导航等功能做了简单的介绍.从今天开始又将准备一期有关百度地图的POI检索的等一列查询功能,如城市检索,周边检索, ...

  3. 浅谈运维工程师的开发能力的培养

    写在前面 本文已获得作者授权,作者的博客地址:https://www.cuiliangblog.cn/ 原文链接:浅谈运维工程师的开发能力的培养 一.运维工程师发展路线 1. 传统运维 侧重点是解决具 ...

  4. 浅谈桌面应用程序的开发

    浅谈桌面应用程序的开发 常用的桌面的应用程序的开发有这几个技术(难度递减) windows api > MFC > Qt > WinForm = VB = DevExpress &g ...

  5. 与你浅谈百度知道问答推广工作的注意事项及技巧

    与你浅谈百度知道问答推广工作的注意事项及技巧 欢迎阅读全网天下大G分享 在中国网民的日常生活中扮演了及其重要的作用,更是遇事不决问百度的说法广为流传.百度作为一个信息展示平台,也是众多商家宣传推广自身 ...

  6. 浅谈百度地图的简单开发之实现地图全景,内景展示功能(四)

    今天,我就接着来浅谈一下关于百度地图的内景,外景的展示功能.今天具体要实现的功能就是输入该地点的名称然后就展示该地点的内景图片,有内景就展示内景,没有则显示该地点的街景,该功能是参考百度地图官方的AP ...

  7. 浅谈百度地图的简单开发最后收官之实现导航功能(五)

    这篇是高仿百度地图的最后一篇了,今天主要来实现百度地图的导航的功能,并且该导航还自带语音播报功能,然后最后对整个百度地图开发过程遇到的问题进行一些列举,并给出一些解决的办法,可能总结的不是很齐全,希望 ...

  8. 浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)

    今天我们来谈下百度地图的定位功能,在此之前我已经将百度地图的基本地图大概说了下,其实百度地图的基本功能还有很多的内容.感兴趣的可以到百度地图的开发者的官网看看.今天就开始来讲下百度地图中的定位功能. ...

  9. 百度地图的简单开发之方向传感器实现定位功能

    今天我们来谈下百度地图的定位功能,在此之前我已经将百度地图的基本地图大概说了下,其实百度地图的基本功能还有很多的内容.感兴趣的可以到百度地图的开发者的官网看看.今天就开始来讲下百度地图中的定位功能. ...

最新文章

  1. 从产品经理向人工智能产品经理进阶 | 机器学习必备知识
  2. 使用代码将github仓库里某个issue同步到CSDN博客上
  3. 打造全能的文本编辑器序列文章
  4. 分库分表需要考虑的问题及方案
  5. ways to keep health
  6. 八十六、推荐组件的redux-thunk异步解决方案、Ajax获取推荐数据
  7. Everything is Serverless,从开源框架对比说起
  8. 共话5G产业创新 5G+视频彩铃产业联盟成立
  9. php页面运用文本编辑器的实例,TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析...
  10. opengl 矩阵投影代码 shade_LookAt、Viewport、Perspective矩阵
  11. 各大市场应用上架整理
  12. uniapp中上传图片到OSS服务器,上传图片upload修改为同步请求、以及h5和APP端压缩图片
  13. 泛雅计算机网络,2020超星泛雅网课计算机网络技术最新最全见面课答案
  14. 【2023年中国法定节假日的订阅链接】
  15. fmt/core.h:1711:3: error: static assertion failed: Cannot format an argument.解决方案
  16. 华为云空间联系人是不是机主_电脑上整理华为云空间联系人数据
  17. 60个国外免费3D模型下载网站
  18. 在VisualStudio中使用EF操作Firebird数据库
  19. [Plant Simulation]使用Battery的Transporter(Battery参数的使用以及小车状态统计)
  20. python参数化建模加工图_基于Python的ABAQUS层压板参数化建模

热门文章

  1. 人身保险产品思维导图
  2. 五步法,做有用的经营分析
  3. 用matlab和labview来制作一个5*5的随机矩阵图形
  4. uni-app实现手机号绑定
  5. Unity2018中关于多道具拾取,按键提示显示问题
  6. Shopee发布Apple(苹果)品牌限售政策
  7. 立创开源|18650锂电池四路充电器
  8. 【数据库学习】——【汇总】MySQL数据库下载与安装(Msi文件安装和免安装版本)、Navicat下载与安装
  9. 易语言5.6官方版下载地址
  10. php全站模板下载器,大气进步教育全站前端模板