一、引言

之前在Angular4使用过百度地图,记录一下踩过的坑

二、实现

1.安装

npm install angular2-baidu-map

2.在app.module.ts配置

ak key在http://lbsyun.baidu.com/apiconsole/key中创建

import { BrowserModule } from '@angular/platform-browser'
import { NgModule } from '@angular/core' import { AppComponent } from './app.component' import { BaiduMapModule } from 'angular2-baidu-map' @NgModule({
declarations: [AppComponent],
imports: [BrowserModule, BaiduMapModule.forRoot({ ak: 'your ak' })],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}

3.在app.component.html使用

<div style="height: 500px;width: 900px;" >
<baidu-map [options]="opts" >
<!--<marker [point]="point" [options]="markOpts" (loaded)="" (clicked)=""></marker>-->
<marker *ngFor="let marker of markers" [point]="marker.point" [options]="marker.options"></marker>
<!--导航控件-->
<control type="navigation" [options]="controlOpts"></control>
<!--地图全景控件-->
<control type="overviewmap" [options]="overviewmapOpts"></control>
<!--比例尺-->
<control type="scale" [options]="scaleOpts"></control>
<!--地图类型-->
<control type="maptype" [options]="mapTypeOpts"></control> <control type="geolocation" [options]="geolocationOpts"></control>
</baidu-map>
</div>

4.在app.component.ts

import {Component, OnInit} from '@angular/core';

import {
MapOptions, Point, MarkerOptions, NavigationControlOptions, ControlAnchor,
NavigationControlType, OverviewMapControlOptions, ScaleControlOptions, MapTypeControlOptions, MapTypeControlType,
GeolocationControlOptions
} from 'angular2-baidu-map';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.sass']
})
export class AppComponent { public opts: MapOptions;
public markers: Array<{ point: Point; options?: MarkerOptions }>;
public controlOpts: NavigationControlOptions;
public overviewmapOpts: OverviewMapControlOptions;
public scaleOpts: ScaleControlOptions;
public mapTypeOpts: MapTypeControlOptions;
public geolocationOpts: GeolocationControlOptions;
// 文字标注
public text: string;
public onMarkerLoad(marker: any) {
const label = new window.BMap.Label(’文字标注‘, {
offset: new window.BMap.Size(20, -12)
});
label.setStyle({
border: '1px solid #d81e06',
color: '#d81e06',
fontSize: '10px',
padding: '1px'
});
marker.setLabel(label);
}
constructor() {
this.opts = {
centerAndZoom: { // 设置中心点和缩放级别
lng: 120.62, // 经度
lat: 31.32, // 纬度
zoom: 15 // 缩放级别
},
minZoom: 3, // 最小缩放级别的地图
maxZoom: 19, // 最大缩放级别的地图
enableHighResolution: true, // 是否用高分辨率的地图,default:true
enableAutoResize: true, // 是否可以自动调整大小,default:true
enableMapClick: true, // 地图是否可以点击,default:true
disableDragging: false, // 是否禁用地图拖动功能
enableScrollWheelZoom: true, // 是否启用滚轮进行缩放功能
disableDoubleClickZoom: false, // 是否禁用双击缩放功能
enableKeyboard: true, // 是否启用键盘移动地图功能
enableInertialDragging: false, // 是否启用惯性阻力函数
enableContinuousZoom: true, // 是否启用连续缩放功能
disablePinchToZoom: false, // 是否禁用缩放功能的缩放
cursor: '', // 设置默认的光标样式,应该遵循CSS规范
draggingCursor: '', // 设置默认的拖动光标样式,应该遵循CSS规范
currentCity: '苏州市', // 设置当前的城市
}; // 这是地图标记marker
this.markers = [
{
options: {
icon: {
imageUrl: '/assets/1.jpg',
size: {
height: 60,
width: 50
}
},
title: 'asdkjgaslfkjasd'
},
point: {
lng: 120.62, // 经度
lat: 31.32, // 纬度
}
},
{
point: {
lng: 120.63, // 经度
lat: 31.32, // 纬度
}
},
{
point: {
lng: 120.63, // 经度
lat: 31.31, // 纬度
}
}
];
// 这是控件control
this.controlOpts = { // 导航控件
anchor: ControlAnchor.BMAP_ANCHOR_TOP_LEFT, // 显示的控件的位置
type: NavigationControlType.BMAP_NAVIGATION_CONTROL_LARGE, // 用来描述它是什么样的导航
offset: { // 控件的大小
width: 30,
height: 30
},
showZoomInfo: true, // 是否展示当前的信息
enableGeolocation: true // 是否启用地理定位功能
};
this.overviewmapOpts = { // 地图全景控件
anchor: ControlAnchor.BMAP_ANCHOR_BOTTOM_RIGHT, // 显示的控件的位置
isOpen: true
};
this.scaleOpts = { // 比例尺控件
anchor: ControlAnchor.BMAP_ANCHOR_BOTTOM_LEFT
};
this.mapTypeOpts = { // 地图类型
type: MapTypeControlType.BMAP_MAPTYPE_CONTROL_HORIZONTAL
};
// Geolocation 和Panorama 没有属性
}
}

效果预览

最新文章

  1. [bigdata] 使用Redis队列来实现与机器无关的Job提交与执行 (python实现)
  2. PNG-8和PNG-24的抉择
  3. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
  4. datetimepicker一个不错的日历android特效
  5. 代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据
  6. 001--VS2013 c++ 游戏框架
  7. intent传递参数
  8. ORA-01722: invalid number
  9. ThinkPHP3.1新特性: 多层MVC支持
  10. php判断手机移动设备访问
  11. EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载
  12. XML 用途
  13. Java集合框架学习(一)List
  14. bzoj:1661 [Usaco2006 Nov]Big Square 巨大正方形
  15. python入门(Python和Pycharm安装)
  16. [Vim]vim使用笔记--分屏操作
  17. WebSocket异步通讯,实时返回数据
  18. Tomcat虚拟根目录与虚拟目录
  19. 432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded
  20. unp学习笔记——Chapter1

热门文章

  1. 设置view的layer属性方法
  2. Python的4个内置数据结构
  3. logistic regression评价方法
  4. Linux根目录下各目录含义
  5. Linux—使用man命令:man:command not found
  6. hi3559v100 sdk中双系统AMP架构的初步了解
  7. 初学树型dp
  8. jmeter从上一个请求使用正则表达式抓取Set-Cookie值,在下一个请求中运用
  9. python的wraps函数
  10. eclipse 错误日志地址