Commit 6858f40f authored by fengruiyu's avatar fengruiyu

修改 首页的推荐的功能

js交互问题
parent ba364355
......@@ -94,7 +94,7 @@ function tosh(center) {
],
[
"zh-CN",
"CN",
"US",
null,
0,
null,
......
......@@ -95,8 +95,26 @@ var CoordinateUtil = {
return doubles_wgs84;
},
wgs84_to_bd:function(point){
var lng=point.lng;
if(lng>180){
console.log("lng>>",lng)
lng=lng%360;
if(lng>180){
lng=lng-360;
}
console.log("lng>>>>",lng)
}
if(lng<-180){
console.log("lng>>",lng)
lng=lng%360;
if(lng<-180){
lng=lng+360;
}
console.log("lng>>>>",lng)
}
//先转 国测局坐标
var doubles_gcj = CoordinateUtil.wgs84togcj02(point.lng, point.lat); //(x 117. y 36. )
var doubles_gcj = CoordinateUtil.wgs84togcj02(lng, point.lat); //(x 117. y 36. )
//国测局坐标转bd
var doubles_bd = CoordinateUtil.gcj02tobd09(doubles_gcj.lng, doubles_gcj.lat);
//返回 纠偏后 坐标
......
......@@ -103,7 +103,7 @@
// panorama.setPov({heading: -40, pitch: 6});
// });
map.addEventListener('dragging',function(e){
// console.log(map.getCenter())
// console.log(map.getCenter())
marker.setPosition(map.getCenter());
});
map.addEventListener('dragend',function(e){
......
window.google = window.google || {};
google.maps = google.maps || {};
let map;//fun
var canclick = true;
var ZSYDa;//gmapinitneed
var mapInited = false;
//强行阻断地图加载
//获取加载参数
function loadGoogleMap(Yda) {
//window.google.maps.Load&&window.google.maps.Load(Yda);
ZSYDa = Yda;
}
//var arr =[120.31, 31.58]
var B_MAP;
let G_MAP;//gmap
(function () {
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function (name, text) {
modules[name] = text;
};
google.maps.Load = function (apiLoad) {
delete google.maps.Load;
apiLoad([
0.009999999776482582,
[
null,
[
getMb1U(),
null,
null,
null,
1,
"904",
[
"http://khms0.google.com/kh?v=904\u0026hl=zh-CN\u0026",
"http://khms1.google.com/kh?v=904\u0026hl=zh-CN\u0026"
]
],
null,
null,
null,
null,
[
[
"http://cbks0.googleapis.com/cbk?",
"http://cbks1.googleapis.com/cbk?"
]
],
[
getMb2U(),
null,
null,
null,
null,
"130",
[
"http://khms0.google.com/kh?v=130\u0026hl=zh-CN\u0026",
"http://khms1.google.com/kh?v=130\u0026hl=zh-CN\u0026"
]
]
],
[
"zh-CN",
"US",
null,
0,
null,
null,
"http://maps.gstatic.com/mapfiles/",
null,
getRequestUrl(),
getRequestUrl(''),
null,
"http://maps.google.com",
null,
"http://maps.gstatic.com/maps-api-v3/api/images/",
"http://www.google.com/maps",
null,
"http://www.google.com",
1,
"http://maps.googleapis.com/maps_api_js_slo/log?hasfast=true"
],
[
getRequestUrl() + "/maps-api-v3/api/js/45/7/intl/zh_cn",
"3.45.7"
],
[
3420973460
],
null,
null,
null,
null,
null,
null,
"initMap",
null,
null,
1,
"http://khms.googleapis.com/mz?v=904\u0026",
getZsKey(),
"http://earthbuilder.googleapis.com",
"http://earthbuilder.googleapis.com",
null,
"http://mts.googleapis.com/maps/vt/icon",
[
[
getRequestUrl() + "/maps/vt"
],
[
getRequestUrl() + "/maps/vt"
],
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
[
"http://www.google.com/maps/vt"
],
"/maps/vt",
565000000,
565,
565290767
],
2,
500,
[
null,
null,
null,
null,
"http://www.google.com/maps/preview/log204",
"",
"http://static.panoramio.com.storage.googleapis.com/photos/",
[
"http://geo0.ggpht.com/cbk",
"http://geo1.ggpht.com/cbk",
"http://geo2.ggpht.com/cbk",
"http://geo3.ggpht.com/cbk"
],
getRequestUrl() + "/maps/api/js/GeoPhotoService.GetMetadata",
getRequestUrl() + "/maps/api/js/GeoPhotoService.SingleImageSearch",
getVrUrls(),
],
null,
null,
null,
null,
"/maps/api/js/ApplicationService.GetEntityDetails",
0,
null,
null,
null,
null,
[],
[
"45.7"
],
1,
0,
[
1
],
null,
null,
null,
0.009999999776482582
], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
})();
function al() {
if (canclick) {
canclick = false;
setTimeout(function () {
canclick = true;
}, 1200);
} else {
function GF_addZoom() {
var zoom = G_MAP.getZoom();
if (zoom == 20) {
tip("已放大至最大级别")
return;
}
var center = map.getCenter();
console.log(center)
const geocoder = new google.maps.Geocoder();
const latlng = {
lat: parseFloat(center.lat()),
lng: parseFloat(center.lng()),
};
toBLatLng(latlng, function (res) {
console.log(res)
if (res.c) {
// tips("猜测为国内,准备使用百度")
bvr(res)
} else {
// tips("猜测为国外,准备使用谷歌")
tosh(center)
}
});
}
function tosh(center) {
console.log("查询国外或中国台湾街景")
var ser = new google.maps.StreetViewService();
const request = {
location: {
lat: center.lat(),
lng: center.lng()
},
radius: 10000,
preference: 'nearest', //google.maps.StreetViewPreference.NEAREST,
};
ser.getPanorama(request, function (a) {
if (a == null || a.location == null) {
tips("暂无街景")
return;
}
console.log(a.location.description)
console.log(a.location.latLng.lat() + ',' + a.location.latLng.lng())
// console.log("准备模拟app跳转至外国街景:" + a.location.description + "==>./streets.html?a=" + a.location.latLng
// .lat() + "&b=" + a.location.latLng.lng())
var params = {
"lng": a.location.latLng.lng(),
"lat": a.location.latLng.lat(),
"title": a.location.description
}
toVurl('g', params)
})
zoom += 1;
G_MAP.setZoom(zoom);
}
//var arr =[120.31, 31.58]
var initMap = function () {
console.log("initMap>>first")
map = new google.maps.Map(document.getElementById("map"), {
zoom: 14,
// RotateControlOptions :RIGHT_CENTER,
center: {
lat: 39.90960456049752,
lng: 116.3972282409668
},
mapTypeId: "hybrid",
zoomControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
rotateControl: false,
fullscreenControl: false,
clickableIcons: false,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER,
},
// scaleControlOptions:true,
});
/**
* HYBRID 此地图类型在卫星图像上显示主要街道的透明图层。
ROADMAP 此地图类型显示普通街道地图。
SATELLITE 此地图类型显示卫星图像。
TERRAIN 此地图类型显示具有地形和植被等物理特征的地图。
*/
function GF_reduceZoom() {
var zoom = G_MAP.getZoom();
if (zoom == 0) {
tip("已缩放至最小级别")
return;
}
zoom -= 1;
G_MAP.setZoom(zoom);
}
function addZoom() {
var zoom = map.getZoom();
if(zoom==20){
function B_addZoom() {
var zoom = B_MAP.getZoom();
if (zoom == 19) {
tip("已放大至最大级别")
return;
}
zoom += 1;
map.setZoom(zoom);
B_MAP.setZoom(zoom);
}
function reduceZoom() {
var zoom = map.getZoom();
if(zoom==0){
function B_reduceZoom() {
var zoom = B_MAP.getZoom();
if (zoom == 1) {
tip("已缩放至最小级别")
return;
}
zoom -= 1;
map.setZoom(zoom);
B_MAP.setZoom(zoom);
}
var vm = new Vue({
el: '#maps',
data: {
NOWUSEBAIDU: true,
G_MAPINITED: false,//initStatus
B_MAPINITED: false,//initStatus
canclick: true,
},
created: function () {
// console.log('llll')
},
methods: {
vrs: function () {
var th = this;
if (th.canclick) {
th.canclick = false;
setTimeout(function () {
th.canclick = true;
}, 2000);
} else {
return;
}
var point;
if (!this.NOWUSEBAIDU) {
gpoint = {lat: G_MAP.getCenter().lat(), lng: G_MAP.getCenter().lng()}
console.log(gpoint)
point = toBPoint(gpoint)
} else {
point = B_MAP.getCenter();
}
console.log(this.NOWUSEBAIDU,point)
getLocation(point, function (res) {
if (res.c) {
console.log("猜测为国内,准备使用百度")
var center = B_MAP.getCenter();
bvr(center)
} else {
console.log("猜测为国外,准备使用谷歌")
var center = G_MAP.getCenter();
tosh(center);
}
});
},
addZoom: function () {
if (this.NOWUSEBAIDU) {
B_addZoom()
} else {
GF_addZoom();
}
},
reduceZoom: function () {
if (this.NOWUSEBAIDU) {
B_reduceZoom()
} else {
GF_reduceZoom();
}
},
initZsMap: function (pointStr) {
console.log(">>>>>>",pointStr)
var th = this;
var inMsg = JSON.parse(pointStr)
var point = {lat: parseFloat(inMsg.lat), lng: parseFloat(inMsg.lng)};
if (inMsg.inner == null) {
getLocation(point, function (res) {
if (res.c) {
console.log("猜测为国内,准备使用百度")
th.G_initMap(point, 14);
th.B_initmap(point, 14);
} else {
console.log("猜测为国外,准备使用谷歌")
th.B_initmap(point, 14);
th.G_initMap(point, 14);
}
});
} else {
if (inMsg.inner == 0 || inMsg == '0') {
console.log("确定为国内,准备使用百度")
th.B_initmap(point, 14);
} else {
console.log("确定为国外,准备使用谷歌")
th.G_initMap(point, 14);
}
}
},
G_initMap: function (point, zoomLevel) {
console.log("initG==>", point, zoomLevel)
if (zoomLevel == undefined || zoomLevel == null)
zoomLevel = 15;
this.NOWUSEBAIDU = false;
var th = this;
if (th.G_MAPINITED == false) {//第一次初始化
th.G_MAPINITED = true;
initMap = function () {
G_MAP = new google.maps.Map(document.getElementById("map"), {
zoom: zoomLevel,
// RotateControlOptions :RIGHT_CENTER,
center: point,
mapTypeId: "hybrid",
zoomControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
rotateControl: false,
fullscreenControl: false,
clickableIcons: false,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER,
},
// scaleControlOptions:true,
});
/**
* HYBRID 此地图类型在卫星图像上显示主要街道的透明图层。
ROADMAP 此地图类型显示普通街道地图。
SATELLITE 此地图类型显示卫星图像。
TERRAIN 此地图类型显示具有地形和植被等物理特征的地图。
*/
// G_MAP.addListener("center_changed", () => {
// console.log("center_changed", {lat: G_MAP.getCenter().lat(), lng: G_MAP.getCenter().lng()})
// });
G_MAP.addListener('zoom_changed', () => {
vm.G_TO_B();
});
G_MAP.addListener("dragend", () => {
console.log("dragend", {lat: G_MAP.getCenter().lat(), lng: G_MAP.getCenter().lng()})
// th.G_TO_BMAP();
centerChanged();
vm.G_TO_B();
});
}
window.google.maps.Load && window.google.maps.Load(G_ZSYDA);
} else {
G_MAP.panTo(point)//第二次初始化
G_MAP.setZoom(zoomLevel)
}
},
G_TO_B: function () {
var th = this;
var zoom = G_MAP.getZoom();
console.log("g zoom", zoom)
if (zoom < 7)
return;
var gpoint = {lat: G_MAP.getCenter().lat(), lng: G_MAP.getCenter().lng()}
var bpoint = toBPoint(gpoint)
getLocation(bpoint, function (res) {
if (res.c) {
var level = G_MAP.getZoom() + 1;
if (level < 3)
level = 3;
if (level > 18)
level = 18;
console.log("猜测为国内,准备谷歌转百度,bpoint==>goint:level", gpoint, bpoint, level)
th.B_initmap(bpoint, level)
}
});
},
B_initmap: function (point, zoomLevel) {
this.NOWUSEBAIDU = true;
console.log("initB==>", point, zoomLevel)
// setTimeout(function () {
if (zoomLevel == undefined || zoomLevel == null)
zoomLevel = 6;
var th = vm;
if (th.B_MAPINITED == false) {
th.B_MAPINITED = true;
// 百度地图API功能
// $("#map").hide();
B_MAP = new BMap.Map("bmap", {
mapType: BMAP_HYBRID_MAP,
enableBizAuthLogo: false
}); // 创建Map实例
B_MAP.centerAndZoom(new BMap.Point(point.lng, point.lat), zoomLevel); // 初始化地图,设置中心点坐标和地图级别
// B_MAP.enableScrollWheelZoom();
// B_MAP.addControl(new BMap.NavigationControl());
// B_MAP.addControl(new BMap.ScaleControl());
// B_MAP.addControl(new BMap.OverviewMapControl());
B_MAP.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
B_MAP.addEventListener('dragend', function (e) {
centerChanged();
vm.B_TO_G();
});
B_MAP.addEventListener('zoomstart', function (type, target) {
// var zoom = B_MAP.getZoom();
// console.log('start zoom=', zoom, ' type=', type, ' ,target=', target);
vm.B_TO_G();
});
} else {
B_MAP.centerAndZoom(new BMap.Point(point.lng, point.lat), zoomLevel); // 初始化地图,设置中心点坐标和地图级别
console.log(">>>>>>>", point, B_MAP.getCenter())
}
// },500)
},
B_TO_G: function () {
var th = this;
var zoom = B_MAP.getZoom();
console.log(' zoom=', zoom);
var point = B_MAP.getCenter();
this.initCenter(point)
if (zoom < 8)//小于9不切换
return;
getLocation(point, function (res) {
if (!res.c) {
var gpoint = toGPoint(res)
var level = B_MAP.getZoom() - 1;
console.log(level)
// if(level<7)
// return;
if (level < 0)
level = 0;
if (level > 20)
level = 20;
console.log("猜测为国外,准备百度转谷歌,bpoint==>goint:level", res, gpoint, level)
th.G_initMap(gpoint, level);
}
});
},
initCenter: function (point) {
if (this.NOWUSEBAIDU && this.G_MAPINITED) {
var gpoint = toGPoint(point)
console.log("同步谷歌中心")
G_MAP.setCenter(point)
}
if (!this.NOWUSEBAIDU && this.B_MAPINITED) {
var bpoint = toBPoint(point)
console.log("同步百度中心")
B_MAP.setCenter(bpoint)
}
}
}
})
window.onload = function () {
console.log("window.load_+++++++++++=")
// console.log("window.load_+++++++++++=")170.89184781519282,-9.108152184807182
allIsOk();
// initZsMap('{"lat":35.69,"lng":139.69}')
//vm.initZsMap('{"lat": 39.30336768549658, "lng": 350.8918478151928}')
}
function initZsMap(pointStr) {
console.log(">>", pointStr)
var point = JSON.parse(pointStr)
if (mapInited == false) {//第一次初始化
mapInited = true;
initMap = function () {
console.log("initMap>>second")
map = new google.maps.Map(document.getElementById("map"), {
zoom: 14,
// RotateControlOptions :RIGHT_CENTER,
center: point,
mapTypeId: "hybrid",
zoomControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
rotateControl: false,
fullscreenControl: false,
clickableIcons: false,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER,
},
// scaleControlOptions:true,
});
map.addListener("center_changed", () => {
centerChanged();
});
/**
* HYBRID 此地图类型在卫星图像上显示主要街道的透明图层。
ROADMAP 此地图类型显示普通街道地图。
SATELLITE 此地图类型显示卫星图像。
TERRAIN 此地图类型显示具有地形和植被等物理特征的地图。
*/
}
window.google.maps.Load && window.google.maps.Load(ZSYDa);
} else {
map.panTo(point)//第二次初始化
}
}
// window.onload = function() {
// allIsOk();
// }
......@@ -126,6 +126,7 @@ class HistoryRecordItemVHM(val activity: SearchMapActivity,val viewModel: Search
val intent = Intent()
intent.putExtra("latitude",historyBean.latitude)
intent.putExtra("longitude",historyBean.longitude)
intent.putExtra("inner",viewModel.index.value)
viewModel.finishData(SearchMapActivity.REQUEST_CODE,intent)
})
}
\ No newline at end of file
......@@ -16,8 +16,15 @@ public class GPS {
private @Nullable double lng;
private @Nullable int inner=0;
public GPS() {
}
public GPS(double lat, double lng,int inner) {
this.lat = lat;
this.lng = lng;
this.inner = inner;
}
public GPS(double lat, double lng) {
this.lat = lat;
......@@ -41,6 +48,6 @@ public class GPS {
}
public String toString() {
return "lat:" + lat + "," + "lng:" + lng;
return "lat:" + lat + "," + "lng:" + lng+"," + "inner:" + inner;
}
}
\ No newline at end of file
......@@ -8,6 +8,5 @@ class MutualBean {
var d:String?=null
var lat:String?=null
var lng:String?=null
var blat:String?=null
var blng:String?=null
var inner:Int=0
}
\ No newline at end of file
package com.mints.street.main.googlemap
import android.os.Bundle
import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -41,13 +42,14 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
var mLocationClient: LocationClient? = null
private val myListener: MyLocationListener = MyLocationListener()
private var isScrollLayoutClose: Boolean = false
private var gps = GPS()
private var gps = GPS(39.915121, 116.403947,0)
inner class MyLocationListener : BDLocationListener {
override fun onReceiveLocation(location: BDLocation?) {
gps.lat = location?.latitude?:0.0
gps.lng = location?.longitude?:0.0
gps.lat = location?.latitude?:39.915121
gps.lng = location?.longitude?:116.403947
}
}
......@@ -68,6 +70,8 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
override fun initData() {
super.initData()
Handler().postDelayed({ isScrollLayoutClose = true }, 2000)
binding.webview.setDefaultHandler(DefaultHandler())
binding.webview.webChromeClient = WebChromeClient()
binding.webview.setOnLongClickListener { true }
......@@ -125,8 +129,10 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
//地图改变时
binding.webview.registerHandler("centerChanged") { data, _ ->
KLog.a("js - > android centerChanged", data)
if (!binding.scrollLayout.isClose){
binding.scrollLayout.toggle(STATUS_CLOSE)
if (!binding.scrollLayout.isClose && isScrollLayoutClose) {
binding.scrollLayout.post {
binding.scrollLayout.toggle(ScrollLayout.STATUS_CLOSE)
}
}
}
//加载完成
......@@ -164,14 +170,8 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
* 调用JS
*/
private fun initZsMap() {
val bd09ToGcj02 = GPSConverterUtils.bd09_To_Gcj02(gps.lat, gps.lat)
val mutualBean = MutualBean()
mutualBean.lat = bd09ToGcj02.lat.toString()
mutualBean.lng = bd09ToGcj02.lng.toString()
mutualBean.blat = gps.lat.toString()
mutualBean.blng = gps.lng.toString()
binding.webview.callHandler("initZsMap"
,Gson().toJson(mutualBean) ) {
,Gson().toJson(gps) ) {
}
}
......@@ -232,12 +232,7 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
}
})
viewModel.pt.observe(this, Observer {
val bd09ToGcj02 = GPSConverterUtils.bd09_To_Gcj02(it.lat, it.lat)
val mutualBean = MutualBean()
mutualBean.lat = bd09ToGcj02.lat.toString()
mutualBean.lng =bd09ToGcj02.lng.toString()
mutualBean.blat = it.lat.toString()
mutualBean.blng = it.lng.toString()
KLog.a("GPSConverterUtils.bd09_To_Gcj02", Gson().toJson(it))
binding.webview.callHandler("initZsMap"
,Gson().toJson(it) ) {
}
......
......@@ -61,18 +61,11 @@ class HomeViewModel(application: Application) : BaseViewModel(application) {
this@HomeViewModel, false
) {
override fun onBusinessSuccess(response: BaseResponse<AuthorizedBean>) {
if (!Gson().toJson(response.result)
.equals(Gson().toJson(authorizedBean.value))
) {
authorizedBean.value = response.result
}
MintsWebViewActivity.startWebView(
name,
MintsWebViewActivity.toBaduVR(lat, lng, response.result?.bk)
)
}
})
} else {
......@@ -183,7 +176,9 @@ class HomeViewModel(application: Application) : BaseViewModel(application) {
if (requestCode == 200 && resultCode == SearchMapActivity.REQUEST_CODE) {
data?.let {
pt.value = GPS(
it.getDoubleExtra("latitude", 0.0), it.getDoubleExtra("longitude", 0.0)
it.getDoubleExtra("latitude", 0.0),
it.getDoubleExtra("longitude", 0.0),
it.getIntExtra("inner", 0)
)
}
}
......
......@@ -34,6 +34,7 @@ class SearchAfterItem(viewModel: SearchMapViewModel,val name:String?
val intent = Intent()
intent.putExtra("latitude",pt?.lat)
intent.putExtra("longitude",pt?.lng)
intent.putExtra("inner",viewModel.index.value)
viewModel.finishData(SearchMapActivity.REQUEST_CODE,intent)
})
}
......@@ -66,7 +66,7 @@ public class ScrollLayout extends ViewGroup {
private void init(Context context) {
touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
slideSlop = AppUtils.dp2Px(context, 45);
offsetB = AppUtils.dp2Px(context, 60);
offsetB = AppUtils.dp2Px(context, 100);
animator = ValueAnimator.ofFloat(0f, 1f);
animator.setDuration(200);
animator.setInterpolator(new LinearInterpolator());
......@@ -199,8 +199,7 @@ public class ScrollLayout extends ViewGroup {
//下滑offset就是负数,上滑就是正数
int offset = (int) (lastY - eY);
lastY = eY;
if ((status == STATUS_EXTEND
|| status == STATUS_CLOSE)
if (status == STATUS_EXTEND
&& super.dispatchTouchEvent(ev)) {
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment