思路: 先输入经纬度,然后判断经纬度的格式,如果格式正确的话 就拿到输入的经纬度 在地球上对应的位置去标点 并且相机的位置中心也飞往该点
先实现标点 相机中心点
showPoints(lng, lat) { // 接受两个参数 lng经度 lat纬度
this.viewer.entities.removeAll() //先清除地球上的标点
console.log(this.viewer.entities)
if(this.viewer.entities.values.length === 0) { //清除完成后地球上没有其他点位了
var entity = this.viewer.entities.add({
position: this.Cesium.Cartesian3.fromDegrees(lng, lat),
/*point: {
color: Cesium.Color.RED, //点位颜色
pixelSize: 10 //像素点大小
},*/billboard: {
image: marker
},
label : {
text : '测试名称',
font : '14pt Source Han Sans CN', //字体样式
fillColor: this.Cesium.Color.BLACK, //字体颜色
backgroundColor: this.Cesium.Color.AQUA, //背景颜色
showBackground:true, //是否显示背景颜色
style: this.Cesium.LabelStyle.FILL, //label样式
outlineWidth : 2,
verticalOrigin: this.Cesium.VerticalOrigin.CENTER,//垂直位置
horizontalOrigin: this.Cesium.HorizontalOrigin.LEFT,//水平位置
pixelOffset:new this.Cesium.Cartesian2(10,0) //偏移
}
})
this.viewer.camera.flyTo({ //相机飞往该点
destination: this.Cesium.Cartesian3.fromDegrees(lng, lat, 500000), //摄像机的最终位置
duration: 2})
}
},
再实现搜索功能
我的需求是接受两种格式 ①120,30 ②120°11'11",30°11'11" 前面是经度 后面是纬度 经度范围是 -180——180 纬度方位是-90——90
需要验证的东西比较多
search() {
//定位的实现
console.log(this.inputText)
var times = (this.inputText.match(/,/g)||[]).length;
if(times === 1) {
// 判断 ',' 出现的次数
console.log('可以继续')
console.log(this.inputText.split(','))
var timesArr = this.inputText.split(',')
if(timesArr.length === 2) {
if(time