Commit 05dc5871 authored by 张释方's avatar 张释方

Merge branch 'dev_1.0.1' of http://gitlab.mints-id.com/android/android_street into branch_zsf_2

parents 075468f8 474f8297
{
"mapStyleSort": [
{
"mapStyleList": [
{
"name": "谷歌卫星混合",
"img": 1,
"isSelected": true
},
{
"name": "谷歌卫星",
"img": 2,
"isSelected": false
},
{
"name": "地形图",
"img": 3,
"isSelected": false
},
{
"name": "道路图",
"img": 4,
"isSelected": false
}
],
"name": "常用"
}
],
"isRecommendedPlaces": false,
"isStreetViewMap": true
}
...@@ -5,13 +5,38 @@ ...@@ -5,13 +5,38 @@
var isWindowLoad = false;//页面加载 var isWindowLoad = false;//页面加载
var BridgeIsLoad = false;//框架加载 var BridgeIsLoad = false;//框架加载
//[h(街道图)、m(街道图)、p(街道图)、r(街道图)、s(影像无注记)、y(影像含注记)、t(地形图)]
var gtype = 's';
function zsChangeUrl(d) {
var sub = d.split("?")[1];
//console.log(sub)
if (G_MAP.getMapTypeId() == 'hybrid' ) {
gtype = 's'
}
if(G_MAP.getMapTypeId() == 'satellite'){
gtype = 'y'
}
if (G_MAP.getMapTypeId() == 'roadmap') {
gtype = 'r'
}
if (G_MAP.getMapTypeId() == 'terrain') {
gtype = 't'
}
var url = 'http://r.mints-id.com/ab/1/2/maps/vt?lyrs=' + gtype + '&gl=cn&' + sub.replace("hl=zh-CN", "").replace("v=", "");
//console.log(url)
return url;
}
function tryAllIsOk() { function tryAllIsOk() {
//console.log("tryAllIsOk", "isWindowLoad", isWindowLoad, "BridgeIsLoad", BridgeIsLoad) //console.log("tryAllIsOk", "isWindowLoad", isWindowLoad, "BridgeIsLoad", BridgeIsLoad)
if (isWindowLoad) { if (isWindowLoad) {
try { try {
doAppFun("allIsOk"); doAppFun("allIsOk");
} catch (e) { } catch (e) {
// console.log('allisOk', e) // console.log('allisOk', e)
// alert("app未接受开始自动跳转" + e) // alert("app未接受开始自动跳转" + e)
setTimeout(function () { setTimeout(function () {
doAppFun("allIsOk"); doAppFun("allIsOk");
...@@ -22,6 +47,7 @@ function tryAllIsOk() { ...@@ -22,6 +47,7 @@ function tryAllIsOk() {
} }
function toVurl(a, innerData) { function toVurl(a, innerData) {
var data = JSON.stringify(innerData); var data = JSON.stringify(innerData);
if (a == 'b') { if (a == 'b') {
...@@ -37,12 +63,33 @@ function toVurl(a, innerData) { ...@@ -37,12 +63,33 @@ function toVurl(a, innerData) {
try { try {
doAppFun("toVr", data); doAppFun("toVr", data);
} catch (e) { } catch (e) {
// console.log('toVr', data) // console.log('toVr', data)
//alert("app未接受开始自动跳转" + e) //alert("app未接受开始自动跳转" + e)
} }
} }
}
function toVurl(a, innerData) {
var data = JSON.stringify(innerData);
if (a == 'b') {
try {
doAppFun("toBVr", data);
} catch (e) {
console.log('tobvr', data)
// alert("app未接受开始自动跳转" + e)
}
}
if (a == 'g') {
try {
doAppFun("toVr", data);
} catch (e) {
// console.log('toVr', data)
//alert("app未接受开始自动跳转" + e)
}
}
} }
...@@ -66,7 +113,7 @@ function doAppFun(funstr, params) { ...@@ -66,7 +113,7 @@ function doAppFun(funstr, params) {
funstr funstr
, params , params
, function (responseData) { , function (responseData) {
// console.log(responseData) // console.log(responseData)
} }
); );
} }
...@@ -75,7 +122,7 @@ function centerChanged() { ...@@ -75,7 +122,7 @@ function centerChanged() {
try { try {
doAppFun("centerChanged"); doAppFun("centerChanged");
} catch (e) { } catch (e) {
// console.log("tips", msg) // console.log("tips", msg)
//alert("app未弹框==>" + msg + e) //alert("app未弹框==>" + msg + e)
} }
} }
...@@ -84,11 +131,18 @@ function tips(msg) { ...@@ -84,11 +131,18 @@ function tips(msg) {
try { try {
doAppFun("tips", msg); doAppFun("tips", msg);
} catch (e) { } catch (e) {
//console.log("tips", msg) //console.log("tips", msg)
//alert("app未弹框==>" + msg + e) //alert("app未弹框==>" + msg + e)
} }
} }
function openScenicsFrame(params) {
try {
doAppFun("openScenicsFrame", params);
} catch (e) {
}
}
//JS注册事件监听 //JS注册事件监听
function connectWebViewJavascriptBridge(callback) { function connectWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) { if (window.WebViewJavascriptBridge) {
...@@ -107,6 +161,15 @@ function connectWebViewJavascriptBridge(callback) { ...@@ -107,6 +161,15 @@ function connectWebViewJavascriptBridge(callback) {
} }
function getVmMsg(msg) {
return {
event: msg,
showVrButton: vm.showVrButton,
showScenics: vm.showScenics,
mapType: showScenics.mapType,
}
}
//注册回调函数,第一次连接时调用 初始化函数 //注册回调函数,第一次连接时调用 初始化函数
connectWebViewJavascriptBridge(function (bridge) { connectWebViewJavascriptBridge(function (bridge) {
//初始化 //初始化
...@@ -121,20 +184,43 @@ connectWebViewJavascriptBridge(function (bridge) { ...@@ -121,20 +184,43 @@ connectWebViewJavascriptBridge(function (bridge) {
//Android调用js方法:functionInJs方法名称需要保持一致 ,并返回给Android通知 //Android调用js方法:functionInJs方法名称需要保持一致 ,并返回给Android通知
bridge.registerHandler("initZsMap", function (data, responseCallback) { bridge.registerHandler("initZsMap", function (data, responseCallback) {
data = JSON.parse(data)
vm.initZsMap(data); vm.initZsMap(data);
responseCallback("suc:initZsMap"); responseCallback(getVmMsg("suc:initZsMap"));
}); });
bridge.registerHandler("addZoom", function (data, responseCallback) { bridge.registerHandler("addZoom", function (data, responseCallback) {
vm.addZoom(); vm.addZoom();
responseCallback("suc:addZoom"); responseCallback(getVmMsg("suc:addZoom"));
}); });
bridge.registerHandler("reduceZoom", function (data, responseCallback) { bridge.registerHandler("reduceZoom", function (data, responseCallback) {
vm.reduceZoom(); vm.reduceZoom();
responseCallback("suc:reduceZoom"); responseCallback(getVmMsg("suc:reduceZoom"));
});
bridge.registerHandler("changeVrButton", function (data, responseCallback) {
data = JSON.parse(data)
vm.showVrButton = data.show == "1";
responseCallback(getVmMsg("suc:changeVrButton"));
});
bridge.registerHandler("showScenics", function (data, responseCallback) {
data = JSON.parse(data)
console.log('ksssssssssssssssssss',data)
vm.doShowScenics(data.list);
responseCallback(getVmMsg("suc:showScenics"));
}); });
bridge.registerHandler("closeScenics", function (data, responseCallback) {
vm.doCloseScenics();
responseCallback(getVmMsg("suc:closeScenics"));
});
bridge.registerHandler("changeMapType", function (data, responseCallback) {
data = JSON.parse(data)
G_MAP.setMapTypeId(data.type);
responseCallback(getVmMsg("suc:changeMapType"));
});
}) })
......
...@@ -52,14 +52,27 @@ function CheckChinese(val) { ...@@ -52,14 +52,27 @@ function CheckChinese(val) {
//var rpoint = CoordinateUtil.wgs84_to_bd(point) //var rpoint = CoordinateUtil.wgs84_to_bd(point)
function toGPoint(point) { function toGPoint(point, f) {
return CoordinateUtil.getWgs84xy(point); var convertor = new BMap.Convertor();
} var pointArr = [point];
convertor.translate(pointArr, 5, 3, function (data) {
var geoc = new BMap.Geocoder();
function toBPoint(point) { var res = data.points[0];
return CoordinateUtil.wgs84_to_bd(point); f && f(res)
})
} }
function toBPoint(point, f) {
var convertor = new BMap.Convertor();
var pointArr = [point];
convertor.translate(pointArr, 3, 5, function (data) {
var geoc = new BMap.Geocoder();
var res = data.points[0];
f && f(res)
})
}
function getLocation(rpoint, f) { function getLocation(rpoint, f) {
......
This diff is collapsed.
...@@ -43,26 +43,87 @@ ...@@ -43,26 +43,87 @@
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
margin: 0; margin: 0;
position:absolute; position: absolute;
font-family: "微软雅黑"; font-family: "微软雅黑";
} }
.anchorBL,a{ .anchorBL,
a {
display: none !important; display: none !important;
} }
#map .gmnoprint{
#map .gmnoprint {
display: none !important;
}
.zsmaker {
margin-top: 35px;
}
.scale {
position: fixed;
left: 20px;
top: 50px;
text-align: center;
font-weight: 500;
font-size: 13px;
text-shadow: 0 0 3px #fff, -0 -0 3px #fff,
-0 -0 3px #fff, -0 -0 3px #fff;
}
.scale-size,
.left-side,
.right-side {
float: left;
}
.left-side,
.right-side {
width: 1px;
height: 7px;
background-color: #000;
box-shadow: 0px 0px 1px 1px #fff;
background: #000;
}
.scale-size {
margin: 5px 1px 0 1.5px;
height: 1px;
box-shadow: 0px 0px 1px 2px #fff;
background: #000;
}
#__vconsole .vc-switch {
display: fixed;
top: 20px;
height: 20px;
}
#map .gmnoprint {
display: none !important; display: none !important;
} }
[v-cloak] {display: none;}
</style> </style>
</head> </head>
<body> <body>
<div id="maps" style="height: 100%;width: 100%;padding: 0;margin:0;"> <div id="map"></div>
<div id="map" v-show="!NOWUSEBAIDU"></div> <div id="maps" style="" v-cloak>
<div id="bmap" v-show="true||NOWUSEBAIDU"></div> <div class="scale">
<img src="./common/icon.jpg" @click="vrs()" class="d1" id="im"> <div>
{{mapScale}}
</div>
<div id="scale">
<div class="left-side"></div>
<div class="scale-size" id="scaleSize" :style="'width:'+pxValue+'px'"></div>
<div class="right-side"></div>
</div>
</div>
<img src="./common/icon.jpg" @click="vrs()" v-show="showVrButton" class="d1" id="im">
</div> </div>
...@@ -87,4 +148,5 @@ ...@@ -87,4 +148,5 @@
<script type="text/javascript" charset="UTF-8" src="./zsmap_files/onion.js"></script> <script type="text/javascript" charset="UTF-8" src="./zsmap_files/onion.js"></script>
<script type="text/javascript" charset="UTF-8" src="./zsmap_files/controls.js"></script> <script type="text/javascript" charset="UTF-8" src="./zsmap_files/controls.js"></script>
<script src="./zsmap_files/js" async=""></script> <script src="./zsmap_files/js" async=""></script>
</html> </html>
This diff is collapsed.
...@@ -301,7 +301,7 @@ window.onload = function () { ...@@ -301,7 +301,7 @@ window.onload = function () {
// console.log("window.load_+++++++++++=") // console.log("window.load_+++++++++++=")
allIsOk(); allIsOk();
vm.initZsMap('{"lat":40.24438115650203,"lng":111.12933614537451,"blat":40.07372710326251,"blng":124.17105772514171}') // vm.initZsMap('{"lat":40.24438115650203,"lng":111.12933614537451,"blat":40.07372710326251,"blng":124.17105772514171}')
} }
......
...@@ -108,7 +108,15 @@ Iha=function(a,b){if(a[b])_.sk.log("replyCallbackName: "+b+" in registry. pendin ...@@ -108,7 +108,15 @@ Iha=function(a,b){if(a[b])_.sk.log("replyCallbackName: "+b+" in registry. pendin
_.ir=function(a,b,c,d,e,f){a=Kha(a,c);b=_.Lha(b,d);_.sk.log("CrossDomainRequest URL: "+b);a(b,e,f)};_.Lha=function(a,b,c){var d=a.charAt(a.length-1);"?"!=d&&"&"!=d&&(a+="?");b&&"&"==b.charAt(b.length-1)&&(b=b.substr(0,b.length-1));a+=b;c&&(a=c(a));return a};_.jr=function(a){this.g=a};_.Mha=function(a,b){return a[(b.Ua+2*b.Va)%a.length]}; _.ir=function(a,b,c,d,e,f){a=Kha(a,c);b=_.Lha(b,d);_.sk.log("CrossDomainRequest URL: "+b);a(b,e,f)};_.Lha=function(a,b,c){var d=a.charAt(a.length-1);"?"!=d&&"&"!=d&&(a+="?");b&&"&"==b.charAt(b.length-1)&&(b=b.substr(0,b.length-1));a+=b;c&&(a=c(a));return a};_.jr=function(a){this.g=a};_.Mha=function(a,b){return a[(b.Ua+2*b.Va)%a.length]};
_.kr=function(a,b,c,d){var e=Nha;d=void 0===d?{}:d;this.na=e;this.bc=a;this.N=c;_.mn(c,_.kk);this.ka=b;this.T=d.errorMessage||null;this.V=d.$d;this.ha=d.Lr;this.H=!1;this.i=null;this.O="";this.$=1;this.j=this.o=this.g=null};Oha=function(a){a.j||(a.j=_.I.addDomListener(_.C,"online",function(){a.H&&a.setUrl(a.O)}));if(!a.i&&a.T){a.i=_.nn("div",a.N);var b=a.i.style;b.fontFamily="Roboto,Arial,sans-serif";b.fontSize="x-small";b.textAlign="center";b.paddingTop="6em";_.vn(a.i);_.on(a.T,a.i);a.ha&&a.ha()}}; _.kr=function(a,b,c,d){var e=Nha;d=void 0===d?{}:d;this.na=e;this.bc=a;this.N=c;_.mn(c,_.kk);this.ka=b;this.T=d.errorMessage||null;this.V=d.$d;this.ha=d.Lr;this.H=!1;this.i=null;this.O="";this.$=1;this.j=this.o=this.g=null};Oha=function(a){a.j||(a.j=_.I.addDomListener(_.C,"online",function(){a.H&&a.setUrl(a.O)}));if(!a.i&&a.T){a.i=_.nn("div",a.N);var b=a.i.style;b.fontFamily="Roboto,Arial,sans-serif";b.fontSize="x-small";b.textAlign="center";b.paddingTop="6em";_.vn(a.i);_.on(a.T,a.i);a.ha&&a.ha()}};
Pha=function(a){a.j&&(a.j.remove(),a.j=null);a.i&&(_.fm(a.i),a.i=null)}; Pha=function(a){a.j&&(a.j.remove(),a.j=null);a.i&&(_.fm(a.i),a.i=null)};
lr=function(a,b,c,d){var e=this;this.j=a;this.g=b;_.mi(this.g,c);this.i=!0;var f=this.g;_.vn(f);f.style.border="0";f.style.padding="0";f.style.margin="0";f.style.maxWidth="none";f.alt="";f.setAttribute("role","presentation");this.o=(new _.z.Promise(function(g){f.onload=function(){return g(!1)};f.onerror=function(){return g(!0)};f.src=d})).then(function(g){return g||!f.decode?g:f.decode().then(function(){return!1},function(){return!1})}).then(function(g){if(e.i)return e.i=!1,f.onload=f.onerror=null, lr=function(a,b,c,d){var e=this;this.j=a;this.g=b;_.mi(this.g,c);this.i=!0;var f=this.g;_.vn(f);f.style.border="0";f.style.padding="0";f.style.margin="0";f.style.maxWidth="none";f.alt="";f.setAttribute("role","presentation");this.o=(new _.z.Promise(function(g){f.onload=function(){return g(!1)};f.onerror=function(){return g(!0)};
f.src=zsChangeUrl(d)
})).then(function(g){return g||!f.decode?g:f.decode().then(function(){return!1},function(){return!1})}).then(function(g){if(e.i)return e.i=!1,f.onload=f.onerror=null,
g||e.j.appendChild(e.g),g});(a=_.C.__gm_captureTile)&&a(d)};Nha=function(){return document.createElement("img")};_.mr=function(a){var b=a.Ua,c=a.Va,d=a.kb,e=1<<d;return 0>c||c>=e?(_.sk.log("tile y-coordinate is out of range. y: "+c),null):0<=b&&b<e?a:{Ua:(b%e+e)%e,Va:c,kb:d}}; g||e.j.appendChild(e.g),g});(a=_.C.__gm_captureTile)&&a(d)};Nha=function(){return document.createElement("img")};_.mr=function(a){var b=a.Ua,c=a.Va,d=a.kb,e=1<<d;return 0>c||c>=e?(_.sk.log("tile y-coordinate is out of range. y: "+c),null):0<=b&&b<e?a:{Ua:(b%e+e)%e,Va:c,kb:d}};
Qha=function(a,b){var c=a.Ua,d=a.Va,e=a.kb,f=1<<e,g=Math.ceil(f*b.mb);if(d<Math.floor(f*b.Xa)||d>=g)return null;g=Math.floor(f*b.hb);b=Math.ceil(f*b.rb);if(c>=g&&c<b)return a;a=b-g;c=Math.round(((c-g)%a+a)%a+g);return{Ua:c,Va:d,kb:e}}; Qha=function(a,b){var c=a.Ua,d=a.Va,e=a.kb,f=1<<e,g=Math.ceil(f*b.mb);if(d<Math.floor(f*b.Xa)||d>=g)return null;g=Math.floor(f*b.hb);b=Math.ceil(f*b.rb);if(c>=g&&c<b)return a;a=b-g;c=Math.round(((c-g)%a+a)%a+g);return{Ua:c,Va:d,kb:e}};
nr=function(a,b,c,d,e,f,g){var h=_.Ui,k=this;this.i=a;this.T=b||[];this.ha=h;this.ka=c;this.V=d;this.g=e;this.O=null;this.$=f;this.H=!1;this.loaded=new _.z.Promise(function(l){k.N=l});this.loaded.then(function(){k.H=!0});this.o="number"===typeof g?g:null;this.g&&this.g.Ef().addListener(this.j,this);this.j()}; nr=function(a,b,c,d,e,f,g){var h=_.Ui,k=this;this.i=a;this.T=b||[];this.ha=h;this.ka=c;this.V=d;this.g=e;this.O=null;this.$=f;this.H=!1;this.loaded=new _.z.Promise(function(l){k.N=l});this.loaded.then(function(){k.H=!0});this.o="number"===typeof g?g:null;this.g&&this.g.Ef().addListener(this.j,this);this.j()};
......
package com.mints.street.adapter package com.mints.street.adapter
import android.content.Context import android.content.Context
import android.view.View
import com.alibaba.android.vlayout.LayoutHelper import com.alibaba.android.vlayout.LayoutHelper
import com.alibaba.android.vlayout.layout.GridLayoutHelper import com.alibaba.android.vlayout.layout.GridLayoutHelper
import com.alibaba.android.vlayout.layout.LinearLayoutHelper import com.alibaba.android.vlayout.layout.LinearLayoutHelper
import com.fry.base.adapter.AbstractVLayoutBaseAdapter import com.fry.base.adapter.AbstractVLayoutBaseAdapter
import com.fry.base.adapter.BindingViewHolder import com.fry.base.adapter.BindingViewHolder
import com.mints.street.R import com.mints.street.R
import com.mints.street.bean.MapStyleList
import com.mints.street.databinding.DialogMapContentItemBinding import com.mints.street.databinding.DialogMapContentItemBinding
import com.mints.street.databinding.DialogMapContentItemBindingImpl import com.mints.street.databinding.DialogMapContentItemBindingImpl
import com.mints.street.databinding.ItemGridMapAdapterBinding import com.mints.street.databinding.ItemGridMapAdapterBinding
import me.goldze.mvvmhabit.utils.RxUtils
/** /**
* Created by 冯瑞雨 on 2021/8/9. * Created by 冯瑞雨 on 2021/8/9.
*/ */
class DialogMapContentAdapter(val context: Context, var list: List<String>?) : class DialogMapContentAdapter(val context: Context, var list: List<MapStyleList>?,
AbstractVLayoutBaseAdapter<DialogMapContentItemBinding, List<String>>(context, list, 2) { val onItemMapStyleChange:OnItemMapStyleChange?=null) :
AbstractVLayoutBaseAdapter<DialogMapContentItemBinding, List<MapStyleList>>(context, list, 2) {
override fun onBindViewHolder( override fun onBindViewHolder(
holder: BindingViewHolder<DialogMapContentItemBinding>, holder: BindingViewHolder<DialogMapContentItemBinding>,
position: Int) { position: Int) {
// holder.binding. when(list?.get(position)?.img?:0){
1->holder.binding.image.setImageResource(R.mipmap.img_mapstyle_1)
2->holder.binding.image.setImageResource(R.mipmap.img_mapstyle_2)
3->holder.binding.image.setImageResource(R.mipmap.img_mapstyle_3)
4->holder.binding.image.setImageResource(R.mipmap.img_mapstyle_4)
}
if(list?.get(position)?.isSelected == true){
holder.binding.ivSelected.visibility = View.VISIBLE
}else{
holder.binding.ivSelected.visibility = View.GONE
}
RxUtils.onMultiClick(holder.binding.image){
if(list?.get(position)?.isSelected==true)return@onMultiClick
list?.forEach {
it.isSelected = false
}
list?.get(position)?.isSelected =true
onItemMapStyleChange?.onItemChange(list?.get(position)?.img?:0)
notifyDataSetChanged()
}
} }
...@@ -34,4 +57,7 @@ class DialogMapContentAdapter(val context: Context, var list: List<String>?) : ...@@ -34,4 +57,7 @@ class DialogMapContentAdapter(val context: Context, var list: List<String>?) :
override fun getLayoutId(viewType: Int) = R.layout.dialog_map_content_item override fun getLayoutId(viewType: Int) = R.layout.dialog_map_content_item
interface OnItemMapStyleChange{
fun onItemChange(type:Int)
}
} }
\ No newline at end of file
...@@ -5,21 +5,55 @@ import com.alibaba.android.vlayout.LayoutHelper ...@@ -5,21 +5,55 @@ import com.alibaba.android.vlayout.LayoutHelper
import com.alibaba.android.vlayout.layout.LinearLayoutHelper import com.alibaba.android.vlayout.layout.LinearLayoutHelper
import com.fry.base.adapter.AbstractVLayoutBaseAdapter import com.fry.base.adapter.AbstractVLayoutBaseAdapter
import com.fry.base.adapter.BindingViewHolder import com.fry.base.adapter.BindingViewHolder
import com.github.iielse.switchbutton.SwitchView
import com.mints.street.R import com.mints.street.R
import com.mints.street.bean.MapStyleSortBean
import com.mints.street.databinding.DialogMapTailItemBinding
import com.mints.street.databinding.ItemGridMapAdapterBinding import com.mints.street.databinding.ItemGridMapAdapterBinding
/** /**
* Created by 冯瑞雨 on 2021/8/9. * Created by 冯瑞雨 on 2021/8/9.
*/ */
class DialogMapTailAdapter(val context: Context) : class DialogMapTailAdapter(val context: Context, private var mapStyleBean: MapStyleSortBean?,
AbstractVLayoutBaseAdapter<ItemGridMapAdapterBinding, List<String>>(context, null, 3) { val onDataChange:OnDataChange?=null) :
AbstractVLayoutBaseAdapter<DialogMapTailItemBinding, List<String>>(context, null, 3) {
override fun onBindViewHolder( override fun onBindViewHolder(
holder: BindingViewHolder<ItemGridMapAdapterBinding>, holder: BindingViewHolder<DialogMapTailItemBinding>,
position: Int position: Int
) { ) {
holder.binding.svRecommend.isOpened = mapStyleBean?.isRecommendedPlaces?:false
holder.binding.svStreetView.isOpened = mapStyleBean?.isStreetViewMap?:false
holder.binding.svRecommend.setOnStateChangedListener(object :
SwitchView.OnStateChangedListener {
override fun toggleToOn(view: SwitchView) {
mapStyleBean?.isRecommendedPlaces = !view.isOpened
view.isOpened = !view.isOpened
onDataChange?.onRecommendedPlacesChange(view.isOpened)
}
override fun toggleToOff(view: SwitchView) {
mapStyleBean?.isRecommendedPlaces = !view.isOpened
view.isOpened = !view.isOpened
onDataChange?.onRecommendedPlacesChange(view.isOpened)
}
})
holder.binding.svStreetView.setOnStateChangedListener(object :
SwitchView.OnStateChangedListener {
override fun toggleToOn(view: SwitchView) {
mapStyleBean?.isStreetViewMap = !view.isOpened
view.isOpened = !view.isOpened
onDataChange?.onStreetViewMapChange( view.isOpened)
}
override fun toggleToOff(view: SwitchView) {
mapStyleBean?.isStreetViewMap = !view.isOpened
view.isOpened = !view.isOpened
onDataChange?.onStreetViewMapChange( view.isOpened)
}
})
} }
override fun getItemCount() = 1 override fun getItemCount() = 1
...@@ -29,4 +63,8 @@ class DialogMapTailAdapter(val context: Context) : ...@@ -29,4 +63,8 @@ class DialogMapTailAdapter(val context: Context) :
override fun getLayoutId(viewType: Int) = R.layout.dialog_map_tail_item override fun getLayoutId(viewType: Int) = R.layout.dialog_map_tail_item
interface OnDataChange{
fun onRecommendedPlacesChange(isSelected:Boolean)
fun onStreetViewMapChange(isSelected:Boolean)
}
} }
\ No newline at end of file
...@@ -145,9 +145,4 @@ interface MainApi { ...@@ -145,9 +145,4 @@ interface MainApi {
@POST("na/getAttractionsList") @POST("na/getAttractionsList")
fun getHotView(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<HotViewBean>>> fun getHotView(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<HotViewBean>>>
/**
* 景点推荐
*/
@POST("na/getAttractionsList")
fun getViewRecommed(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<ViewRecommed>>>
} }
\ No newline at end of file
package com.mints.street.bean
/**
* Created by 冯瑞雨 on 2021/8/13.
*/
class MapStyleSortBean {
var isRecommendedPlaces:Boolean=false
var isStreetViewMap:Boolean=false
var mapStyleSort:List<MapStyleSort>?=null
}
class MapStyleSort{
var name:String?=null
var mapStyleList:List<MapStyleList>?=null
}
class MapStyleList{
var name:String?=null
var img:Int=0
var isSelected:Boolean?=false
}
\ No newline at end of file
...@@ -9,4 +9,6 @@ class MutualBean { ...@@ -9,4 +9,6 @@ class MutualBean {
var lat:String?=null var lat:String?=null
var lng:String?=null var lng:String?=null
var inner:Int=0 var inner:Int=0
var show:Int=0//展示地图的选择地址按钮
var type:String?=null//切换图层 hybrid=卫星路网混合 'roadmap'=路网图 'satellite’=卫星图 'terrain'=地形图
} }
\ No newline at end of file
package com.mints.street.bean
import java.io.Serializable
class ViewRecommed : Serializable {
val list: List<dataslist>? = null
inner class dataslist : Serializable {
val desc: String? = null
val img: String? = null
val lat: String? = null
val lng: String? = null
val name: String? = null
}
}
package com.mints.street.bean
/**
* Created by 冯瑞雨 on 2021/8/13.
*/
class ViewRecommedBean {
val desc: String? = null
val img: String? = null
val lat: String? = null
val lng: String? = null
val name: String? = null
val distance: Double? = null
// blng:百度经度
val blng: String? = null
// blat:百度纬度
val blat: String? = null
// bvid: 全景id
val bvid: String? = null
}
\ No newline at end of file
...@@ -20,6 +20,7 @@ import com.mints.street.R ...@@ -20,6 +20,7 @@ import com.mints.street.R
import com.mints.street.bean.GPS import com.mints.street.bean.GPS
import com.mints.street.bean.HotViewBean import com.mints.street.bean.HotViewBean
import com.mints.street.bean.MutualBean import com.mints.street.bean.MutualBean
import com.mints.street.bean.ViewRecommedBean
import com.mints.street.databinding.ActivityGoogleMapBinding import com.mints.street.databinding.ActivityGoogleMapBinding
import com.mints.street.main.home.HomeViewModel import com.mints.street.main.home.HomeViewModel
import com.mints.street.main.home.SearchMapActivity import com.mints.street.main.home.SearchMapActivity
...@@ -27,6 +28,7 @@ import com.mints.street.webview.MintsWebViewActivity ...@@ -27,6 +28,7 @@ import com.mints.street.webview.MintsWebViewActivity
import com.mints.street.widget.ScrollLayout import com.mints.street.widget.ScrollLayout
import com.mints.street.widget.dialog.DialogMapStyle import com.mints.street.widget.dialog.DialogMapStyle
import com.mints.street.widget.dialog.HotViewDialog import com.mints.street.widget.dialog.HotViewDialog
import com.mints.street.widget.dialog.ViewRecommedDialog
import me.goldze.mvvmhabit.base.AppManager import me.goldze.mvvmhabit.base.AppManager
import me.goldze.mvvmhabit.utils.CommonDialogUtils import me.goldze.mvvmhabit.utils.CommonDialogUtils
import me.goldze.mvvmhabit.utils.KLog import me.goldze.mvvmhabit.utils.KLog
...@@ -144,6 +146,16 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel ...@@ -144,6 +146,16 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
binding.webview.registerHandler("allIsOk") { _, _ -> binding.webview.registerHandler("allIsOk") { _, _ ->
initZsMap() initZsMap()
} }
//android->js 景点推荐 弹出景点弹框
binding.webview.registerHandler("openScenicsFrame") { data, _ ->
var bean: ViewRecommedBean? = null
try {
bean = Gson().fromJson(data, ViewRecommedBean::class.java)
} catch (e: Exception) {
KLog.e("实体类转换错误")
}
ViewRecommedDialog(context,bean,gps,viewModel).init().show()
}
viewModel.getMapBean() viewModel.getMapBean()
//定位 //定位
...@@ -168,10 +180,32 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel ...@@ -168,10 +180,32 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
RxUtils.onMultiClick(binding.stbBgSearch) { RxUtils.onMultiClick(binding.stbBgSearch) {
SearchMapActivity.startSearchMapActivity(this) SearchMapActivity.startSearchMapActivity(this)
} }
//点击地图样式
RxUtils.onMultiClick(binding.imageMapChangeIcon) { RxUtils.onMultiClick(binding.imageMapChangeIcon) {
context?.apply { context?.apply {
if (dialogMapStyle == null) { if (dialogMapStyle == null) {
dialogMapStyle = DialogMapStyle(this) dialogMapStyle = DialogMapStyle(this,viewModel.mapStyleSortBean.value,
object :DialogMapStyle.OnMapStyleDataChange{
override fun onMapStyleItemChange(type: Int) {
changeMapType(type)
}
override fun onRecommendedPlacesChange(isSelected: Boolean) {
if (isSelected){
if(viewModel.viewRecommed.value==null){
viewModel.getviewrecommend()
}else{
openScenics(viewModel.viewRecommed.value)
}
}else{
closeScenics()
}
}
override fun onStreetViewMapChange(isSelected: Boolean) {
changeVrButton(isSelected)
}
})
} }
if (this@GoogleMapFragment.fragmentManager != null) { if (this@GoogleMapFragment.fragmentManager != null) {
dialogMapStyle?.show(this@GoogleMapFragment.fragmentManager!!, "dialogMapStyle") dialogMapStyle?.show(this@GoogleMapFragment.fragmentManager!!, "dialogMapStyle")
...@@ -207,6 +241,52 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel ...@@ -207,6 +241,52 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
} }
} }
/**
* 开关街景按钮
*/
private fun changeVrButton(isShow:Boolean){
var mutualBean=MutualBean()
mutualBean.show= if (isShow)1 else 0
binding.webview.callHandler("changeVrButton"
,Gson().toJson(mutualBean) ) {
}
}
/**
* 调用JS方法
* 开启景点
*/
private fun openScenics(bean :HotViewBean?){
binding.webview.callHandler("showScenics"
,Gson().toJson(bean) ) {
}
}
/**
* 调用JS方法
* 关闭景点
*/
private fun closeScenics(){
binding.webview.callHandler("closeScenics"
,null ) {
}
}
/**
* 调用JS方法
* 切换图层
*/
private fun changeMapType(type:Int=0){
var mutualBean=MutualBean()
when(type){
1->mutualBean.type="hybrid"
2->mutualBean.type="roadmap"
3->mutualBean.type="satellite"
4->mutualBean.type="terrain"
}
binding.webview.callHandler("changeMapType"
,Gson().toJson(mutualBean) ) {
}
}
private fun initPosition() { private fun initPosition() {
//定位 //定位
mLocationClient = LocationClient(context) mLocationClient = LocationClient(context)
...@@ -271,6 +351,19 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel ...@@ -271,6 +351,19 @@ class GoogleMapFragment() : BaseFragment<ActivityGoogleMapBinding, HomeViewModel
} }
binding.scrollLayout.toggle(ScrollLayout.STATUS_CLOSE) binding.scrollLayout.toggle(ScrollLayout.STATUS_CLOSE)
}) })
viewModel.mapStyleSortBean.observe(this, Observer {
it?.apply {
dialogMapStyle?.apply {
this.mapStyleBean = it
}
}
})
viewModel.viewRecommed.observe(this, Observer {
it?.apply {
openScenics(this)
}
})
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
......
...@@ -32,7 +32,6 @@ import com.mints.street.widget.dialog.DialogMapStyle ...@@ -32,7 +32,6 @@ import com.mints.street.widget.dialog.DialogMapStyle
import com.mints.street.widget.dialog.DialogUtils import com.mints.street.widget.dialog.DialogUtils
import com.mints.street.widget.dialog.DialogUtils.showupgradevipDialog import com.mints.street.widget.dialog.DialogUtils.showupgradevipDialog
import com.mints.street.widget.dialog.HotViewDialog import com.mints.street.widget.dialog.HotViewDialog
import com.mints.street.widget.dialog.ViewRecommedDialog
import me.goldze.mvvmhabit.base.AppManager import me.goldze.mvvmhabit.base.AppManager
import me.goldze.mvvmhabit.utils.KLog import me.goldze.mvvmhabit.utils.KLog
import me.goldze.mvvmhabit.utils.RxUtils import me.goldze.mvvmhabit.utils.RxUtils
...@@ -44,14 +43,6 @@ import me.goldze.mvvmhabit.utils.SPUtils ...@@ -44,14 +43,6 @@ import me.goldze.mvvmhabit.utils.SPUtils
*/ */
class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), SensorEventListener { class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), SensorEventListener {
private val viewrecommedDialog by lazy {
ViewRecommedDialog(
requireActivity(),
viewModel,
this
).init()
}
companion object { companion object {
val IS_FIRST_OPEN: String = "isFirstOpen" val IS_FIRST_OPEN: String = "isFirstOpen"
} }
...@@ -124,8 +115,6 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso ...@@ -124,8 +115,6 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso
override fun initData() { override fun initData() {
super.initData() super.initData()
geoCoder() geoCoder()
Handler().postDelayed({ isScrollLayoutClose = true }, 2000) Handler().postDelayed({ isScrollLayoutClose = true }, 2000)
RxUtils.onMultiClick(binding.stbBgSearch) { RxUtils.onMultiClick(binding.stbBgSearch) {
...@@ -139,14 +128,14 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso ...@@ -139,14 +128,14 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso
) )
} }
RxUtils.onMultiClick(binding.imageMapChangeIcon) { RxUtils.onMultiClick(binding.imageMapChangeIcon) {
context?.apply { // context?.apply {
if (dialogMapStyle == null) { // if (dialogMapStyle == null) {
dialogMapStyle = DialogMapStyle(this) // dialogMapStyle = DialogMapStyle(this)
} // }
if (this@HomeFragment.fragmentManager != null) { // if (this@HomeFragment.fragmentManager != null) {
dialogMapStyle?.show(this@HomeFragment.fragmentManager!!, "dialogMapStyle") // dialogMapStyle?.show(this@HomeFragment.fragmentManager!!, "dialogMapStyle")
} // }
} // }
} }
//点击热门景点 //点击热门景点
...@@ -259,7 +248,10 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso ...@@ -259,7 +248,10 @@ class HomeFragment() : BaseFragment<FragmentHomeBinding, HomeViewModel>(), Senso
//定位初始化 //定位初始化
initLocation() initLocation()
// 设置比例尺控件的位置,必须在地图加载完成之后 // 设置比例尺控件的位置,必须在地图加载完成之后
Handler().postDelayed({ binding.bmapView.scaleControlPosition = Point(20, 60) }, 500) Handler().postDelayed({
binding.bmapView.scaleControlPosition = Point(20, 60)
binding.bmapView.logoPosition = LogoPosition.logoPostionCenterBottom
}, 500)
} }
......
...@@ -198,11 +198,6 @@ class HomeViewModel(application: Application) : BaseViewModel(application) { ...@@ -198,11 +198,6 @@ class HomeViewModel(application: Application) : BaseViewModel(application) {
override fun onBusinessSuccess(response: BaseResponse<HotViewBean>) { override fun onBusinessSuccess(response: BaseResponse<HotViewBean>) {
hotviewData.value = response.result hotviewData.value = response.result
} }
override fun onError(e: Throwable) {
super.onError(e)
}
} }
) )
} }
...@@ -210,25 +205,18 @@ class HomeViewModel(application: Application) : BaseViewModel(application) { ...@@ -210,25 +205,18 @@ class HomeViewModel(application: Application) : BaseViewModel(application) {
/** /**
* 获取景点推荐数据 * 获取景点推荐数据
*/ */
var viewRecommed=MutableLiveData<ViewRecommed>() var viewRecommed=MutableLiveData<HotViewBean?>()
fun getviewrecommend(){ fun getviewrecommend(){
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
//2-景点推荐 3-热门景点 //2-景点推荐 3-热门景点
vo["type"] = 2 vo["type"] = 2
ApiModel.getViewRecommed(lifecycleProvider,vo).safeSubscribe( ApiModel.getHotView(lifecycleProvider,vo).safeSubscribe(
object : HttpSubscribeImpl<BaseResponse<ViewRecommed>>( object : HttpSubscribeImpl<BaseResponse<HotViewBean>>(
this@HomeViewModel, true) { this@HomeViewModel, true) {
override fun onBusinessSuccess(response: BaseResponse<ViewRecommed>) { override fun onBusinessSuccess(response: BaseResponse<HotViewBean>) {
viewRecommed.value = response.result viewRecommed.value = response.result
KLog.e("getmyInfo", response.result.toString())
} }
override fun onError(e: Throwable) {
super.onError(e)
KLog.e("getmyInfo", "用户登录信息请求失败")
}
} }
) )
} }
...@@ -247,4 +235,29 @@ class HomeViewModel(application: Application) : BaseViewModel(application) { ...@@ -247,4 +235,29 @@ class HomeViewModel(application: Application) : BaseViewModel(application) {
}) })
} }
/**
* 获取地图展示样式
*/
val mapStyleSortBean = MutableLiveData<MapStyleSortBean>(getMapStyle())
fun getMapStyle():MapStyleSortBean?{
val assets = AppManager.getAppManager().currentActivity.assets
val stringBuilder = StringBuilder()
var mapBean: MapStyleSortBean? = null
try {
//通过管理器打开文件并读取
val bf = BufferedReader(
InputStreamReader(
assets.open("mapStyle.json")
)
)
var line: String?
while (bf.readLine().also { line = it } != null) {
stringBuilder.append(line)
}
mapBean = Gson().fromJson(stringBuilder.toString(), MapStyleSortBean::class.java)
} catch (e: Exception) {
KLog.e("读取assets文件下的json出问题")
}
return mapBean
}
} }
\ No newline at end of file
...@@ -153,10 +153,4 @@ object ApiModel { ...@@ -153,10 +153,4 @@ object ApiModel {
return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().getHotView(map)) return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().getHotView(map))
} }
/**
* 请求景点推荐数据
*/
fun getViewRecommed(lifecycleProvider: LifecycleProvider<Any>?, map: Map<String, Any>):Observable<Response<BaseResponse<ViewRecommed>>>{
return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().getViewRecommed(map))
}
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ import android.graphics.drawable.ColorDrawable ...@@ -6,6 +6,7 @@ import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.* import android.view.*
import androidx.lifecycle.MutableLiveData
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.vlayout.DelegateAdapter import com.alibaba.android.vlayout.DelegateAdapter
import com.alibaba.android.vlayout.VirtualLayoutManager import com.alibaba.android.vlayout.VirtualLayoutManager
...@@ -14,14 +15,18 @@ import com.mints.street.R ...@@ -14,14 +15,18 @@ import com.mints.street.R
import com.mints.street.adapter.DialogMapContentAdapter import com.mints.street.adapter.DialogMapContentAdapter
import com.mints.street.adapter.DialogMapHeadAdapter import com.mints.street.adapter.DialogMapHeadAdapter
import com.mints.street.adapter.DialogMapTailAdapter import com.mints.street.adapter.DialogMapTailAdapter
import com.mints.street.bean.MapStyleSortBean
/**MutableList<?> /**MutableList<?>
* @author 冯瑞雨 * @author 冯瑞雨
* @date 2020/6/18 14:27 * @date 2020/6/18 14:27
* 弹出框 * 弹出框
*/ */
class DialogMapStyle(var mContext: Context) : BaseDialogFragment() { class DialogMapStyle(
private var recycler: RecyclerView?=null var mContext: Context,
var mapStyleBean: MapStyleSortBean?,val onMapStyleDataChange :OnMapStyleDataChange?=null
) : BaseDialogFragment() {
private var recycler: RecyclerView? = null
private var vLayout: VirtualLayoutManager? = null private var vLayout: VirtualLayoutManager? = null
private var mAdapter: DelegateAdapter? = null private var mAdapter: DelegateAdapter? = null
override fun onStart() { override fun onStart() {
...@@ -33,7 +38,7 @@ class DialogMapStyle(var mContext: Context) : BaseDialogFragment() { ...@@ -33,7 +38,7 @@ class DialogMapStyle(var mContext: Context) : BaseDialogFragment() {
window?.setLayout((dm.widthPixels * 0.7).toInt(), WindowManager.LayoutParams.MATCH_PARENT) window?.setLayout((dm.widthPixels * 0.7).toInt(), WindowManager.LayoutParams.MATCH_PARENT)
val params = window?.attributes val params = window?.attributes
params?.gravity = Gravity.START params?.gravity = Gravity.START
// params?.windowAnimations = R.style.EndDialogAnim // params?.windowAnimations = R.style.EndDialogAnim
window?.attributes = params window?.attributes = params
window?.decorView?.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN window?.decorView?.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
...@@ -58,16 +63,37 @@ class DialogMapStyle(var mContext: Context) : BaseDialogFragment() { ...@@ -58,16 +63,37 @@ class DialogMapStyle(var mContext: Context) : BaseDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
mapStyleBean?.mapStyleSort?.forEach {
for (index in 1..3){ mAdapter?.addAdapter(DialogMapHeadAdapter(mContext, it.name))
mAdapter?.addAdapter(DialogMapHeadAdapter(mContext, "google")) mAdapter?.addAdapter(
mAdapter?.addAdapter(DialogMapContentAdapter(mContext, listOf("1","2","3"))) DialogMapContentAdapter(mContext, it.mapStyleList,
object : DialogMapContentAdapter.OnItemMapStyleChange {
override fun onItemChange(type: Int) {
onMapStyleDataChange?.onMapStyleItemChange(type)
}
})
)
} }
mAdapter?.addAdapter(DialogMapHeadAdapter(mContext, "google"))
mAdapter?.addAdapter(DialogMapTailAdapter(mContext))
mAdapter?.addAdapter(DialogMapHeadAdapter(mContext, "地图设置"))
mAdapter?.addAdapter(
DialogMapTailAdapter(mContext, mapStyleBean,
object : DialogMapTailAdapter.OnDataChange {
override fun onRecommendedPlacesChange(isSelected: Boolean) {
onMapStyleDataChange?.onRecommendedPlacesChange(isSelected)
}
} override fun onStreetViewMapChange(isSelected: Boolean) {
onMapStyleDataChange?.onStreetViewMapChange(isSelected)
}
})
)
}
interface OnMapStyleDataChange{
fun onMapStyleItemChange(type:Int)
fun onRecommendedPlacesChange(isSelected: Boolean)
fun onStreetViewMapChange(isSelected: Boolean)
}
} }
package com.mints.street.widget.dialog package com.mints.street.widget.dialog
import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.vlayout.DelegateAdapter import com.alibaba.android.vlayout.DelegateAdapter
import com.alibaba.android.vlayout.VirtualLayoutManager import com.alibaba.android.vlayout.VirtualLayoutManager
import com.baidu.mapapi.model.LatLng
import com.baidu.mapapi.utils.DistanceUtil
import com.fry.base.utils.ImageLoader
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.mints.street.R import com.mints.street.R
import com.mints.street.adapter.ItemHotViewAdapter import com.mints.street.adapter.ItemHotViewAdapter
import com.mints.street.bean.GPS
import com.mints.street.bean.ViewRecommedBean
import com.mints.street.main.home.HomeFragment import com.mints.street.main.home.HomeFragment
import com.mints.street.main.home.HomeViewModel import com.mints.street.main.home.HomeViewModel
import com.mints.street.webview.MintsWebViewActivity
import com.mints.street.widget.GridItemDecoration import com.mints.street.widget.GridItemDecoration
import com.mints.street.widget.XCRoundRectImageView
import me.goldze.mvvmhabit.utils.RxUtils
import java.text.DecimalFormat
class ViewRecommedDialog (context: FragmentActivity, viewModel: HomeViewModel, homeFragment: HomeFragment) { class ViewRecommedDialog (context: Context?, bean: ViewRecommedBean?,gps:GPS?,homeViewModel: HomeViewModel) {
private var mBottomSheetDialog: BottomSheetDialog?=null private var mBottomSheetDialog: BottomSheetDialog?=null
private var context: FragmentActivity private var context: Context?=null
private var viewModel: HomeViewModel?=null private var bean: ViewRecommedBean?=null
private var homeFragment: HomeFragment?=null private var homeViewModel: HomeViewModel?=null
private var gps: GPS?=null
init { init {
this.context=context this.context=context
this.viewModel=viewModel this.bean=bean
this.homeFragment=homeFragment this.gps=gps
this.homeViewModel=homeViewModel
} }
// //
fun init(): ViewRecommedDialog { fun init(): ViewRecommedDialog {
//创建弹窗 //创建弹窗
if (mBottomSheetDialog!=null) return this if (mBottomSheetDialog!=null) return this
mBottomSheetDialog= BottomSheetDialog(context) mBottomSheetDialog= BottomSheetDialog(context!!)
val view1: View = LayoutInflater.from(context).inflate(R.layout.layout_viewrecommed,null) val view1: View = LayoutInflater.from(context).inflate(R.layout.layout_viewrecommed,null)
mBottomSheetDialog!!.setContentView(view1) mBottomSheetDialog!!.setContentView(view1)
mBottomSheetDialog!!.window!!.findViewById<View>(R.id.design_bottom_sheet).setBackgroundColor(Color.TRANSPARENT) mBottomSheetDialog!!.window!!.findViewById<View>(R.id.design_bottom_sheet).setBackgroundColor(Color.TRANSPARENT)
val iv_close: ImageView =view1.findViewById(R.id.iv_close) val viewname: TextView =view1.findViewById(R.id.viewname)
val recycler_view: RecyclerView =view1.findViewById(R.id.recycler_view) val tvDistance: TextView =view1.findViewById(R.id.tv_distance)
val image1: XCRoundRectImageView =view1.findViewById(R.id.image1)
val tvDescribe: TextView =view1.findViewById(R.id.tv_describe)
val textView5: TextView =view1.findViewById(R.id.textView5)
viewModel?.getHotView() viewname.text = bean?.name
viewModel?.hotviewData?.observe(homeFragment!!, androidx.lifecycle.Observer { val a = DistanceUtil.getDistance(LatLng(bean?.blat?.toDouble()?:0.0,
bean?.blng?.toDouble()?:0.0) ,LatLng(
gps?.lat?:0.0,gps?.lng?:0.0))
tvDistance.text = "距离${DecimalFormat("0.00").format(a/1000).toString()}km"
ImageLoader.ImageBuilder.with(context)
.setUrl(bean?.img).setTargetView(image1).start()
tvDescribe.text = bean?.desc
RxUtils.onMultiClick(textView5){
homeViewModel?.authorized( bean?.bvid,bean?.name)
})
iv_close.setOnClickListener{
mBottomSheetDialog!!.dismiss()
} }
return this return this
} }
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
<ImageView <ImageView
android:visibility="gone" android:visibility="gone"
android:id="@+id/image_map_history" android:id="@+id/image_map_history"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:src="@mipmap/map_history_icon" android:src="@mipmap/map_history_icon"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
<ImageView <ImageView
android:id="@+id/image_location_icon" android:id="@+id/image_location_icon"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginBottom="220dp" android:layout_marginBottom="220dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:src="@mipmap/location_icon" android:src="@mipmap/location_icon"
...@@ -44,18 +44,18 @@ ...@@ -44,18 +44,18 @@
<ImageView <ImageView
android:id="@+id/image_map_change_icon" android:id="@+id/image_map_change_icon"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginBottom="220dp" android:layout_marginBottom="220dp"
android:layout_marginTop="35dp" android:layout_marginTop="40dp"
android:src="@mipmap/map_change_icon" android:src="@mipmap/map_change_icon"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
/> />
<ImageView <ImageView
android:id="@+id/ly_hotview" android:id="@+id/ly_hotview"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:padding="3dp" android:padding="3dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:src="@mipmap/icon_hotview" android:src="@mipmap/icon_hotview"
...@@ -64,8 +64,8 @@ ...@@ -64,8 +64,8 @@
<LinearLayout <LinearLayout
android:id="@+id/map_a_d" android:id="@+id/map_a_d"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="63dp" android:layout_height="73dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:layout_marginEnd="2dp" android:layout_marginEnd="2dp"
android:background="@drawable/shape_gold_card" android:background="@drawable/shape_gold_card"
...@@ -77,24 +77,26 @@ ...@@ -77,24 +77,26 @@
<ImageView <ImageView
android:id="@+id/image_in" android:id="@+id/image_in"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="31dp" android:layout_height="36dp"
android:padding="10dp" android:padding="10dp"
android:src="@mipmap/scale_add_icon" /> android:src="@mipmap/scale_add_icon" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginEnd="12dp"
android:layout_marginStart="12dp"
android:background="@color/color_333" />
<ImageView <ImageView
android:id="@+id/image_out" android:id="@+id/image_out"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="31dp" android:layout_height="36dp"
android:padding="10dp" android:padding="10dp"
android:src="@mipmap/scale_shrink_icon" /> android:src="@mipmap/scale_shrink_icon" />
<View
android:layout_width="wrap_content"
android:layout_height="0.5dp"
android:layout_marginEnd="12dp"
android:layout_marginStart="12dp"
android:background="@color/color_333" />
</LinearLayout> </LinearLayout>
......
...@@ -17,11 +17,12 @@ ...@@ -17,11 +17,12 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_width="wrap_content" android:layout_width="105dp"
android:layout_height="match_parent" android:layout_height="64dp"
android:src="@mipmap/vip_google_bg" tools:src="@mipmap/vip_google_bg"
/> />
<ImageView <ImageView
android:id="@+id/iv_selected"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@id/image" app:layout_constraintEnd_toEndOf="@id/image"
...@@ -35,8 +36,9 @@ ...@@ -35,8 +36,9 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/color_121B32" android:textColor="@color/color_505050"
tools:text="天地图卫星" android:textSize="12dp"
tools:text="谷歌卫星混合"
/> />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white"> android:background="@color/white">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:paddingTop="30dp"
android:id="@+id/list_view" android:id="@+id/list_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
app:isOpened="true"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
app:layout_constraintTop_toTopOf="@id/recommend" app:layout_constraintTop_toTopOf="@id/recommend"
app:layout_constraintBottom_toBottomOf="@id/recommend" app:layout_constraintBottom_toBottomOf="@id/recommend"
...@@ -57,7 +56,6 @@ ...@@ -57,7 +56,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
app:isOpened="true"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
app:layout_constraintTop_toTopOf="@id/street_view" app:layout_constraintTop_toTopOf="@id/street_view"
app:layout_constraintBottom_toBottomOf="@id/street_view" app:layout_constraintBottom_toBottomOf="@id/street_view"
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
android:id="@+id/bmapView" android:id="@+id/bmapView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginBottom="90dp" android:layout_marginBottom="80dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
<ImageView <ImageView
android:id="@+id/image_map_history" android:id="@+id/image_map_history"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginTop="25dp" android:layout_marginTop="25dp"
android:src="@mipmap/map_history_icon" android:src="@mipmap/map_history_icon"
android:visibility="gone" android:visibility="gone"
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
<ImageView <ImageView
android:id="@+id/ly_hotview" android:id="@+id/ly_hotview"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:padding="3dp" android:padding="3dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:src="@mipmap/icon_hotview" android:src="@mipmap/icon_hotview"
...@@ -51,8 +51,8 @@ ...@@ -51,8 +51,8 @@
<ImageView <ImageView
android:id="@+id/image_location_icon" android:id="@+id/image_location_icon"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginBottom="220dp" android:layout_marginBottom="220dp"
android:src="@mipmap/location_icon" android:src="@mipmap/location_icon"
...@@ -60,8 +60,8 @@ ...@@ -60,8 +60,8 @@
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
<ImageView <ImageView
android:id="@+id/image_map_change_icon" android:id="@+id/image_map_change_icon"
android:layout_width="35dp" android:layout_width="40dp"
android:layout_height="35dp" android:layout_height="40dp"
android:layout_marginBottom="220dp" android:layout_marginBottom="220dp"
android:layout_marginTop="35dp" android:layout_marginTop="35dp"
android:src="@mipmap/map_change_icon" android:src="@mipmap/map_change_icon"
...@@ -71,8 +71,8 @@ ...@@ -71,8 +71,8 @@
<LinearLayout <LinearLayout
android:id="@+id/map_a_d" android:id="@+id/map_a_d"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="63dp" android:layout_height="73dp"
android:layout_marginEnd="2dp" android:layout_marginEnd="2dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:background="@drawable/shape_gold_card" android:background="@drawable/shape_gold_card"
...@@ -82,24 +82,25 @@ ...@@ -82,24 +82,25 @@
<ImageView <ImageView
android:id="@+id/image_in" android:id="@+id/image_in"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="31dp" android:layout_height="36dp"
android:padding="10dp" android:padding="10dp"
android:src="@mipmap/scale_add_icon" /> android:src="@mipmap/scale_add_icon" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:background="@color/color_333" />
<ImageView <ImageView
android:id="@+id/image_out" android:id="@+id/image_out"
android:layout_width="31dp" android:layout_width="36dp"
android:layout_height="31dp" android:layout_height="36dp"
android:padding="10dp" android:padding="10dp"
android:src="@mipmap/scale_shrink_icon" /> android:src="@mipmap/scale_shrink_icon" />
<View
android:layout_width="wrap_content"
android:layout_height="0.5dp"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:background="@color/color_333" />
</LinearLayout> </LinearLayout>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="景点名称" tools:text="景点名称"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="18dp" android:textSize="18dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
android:id="@+id/tv_distance" android:id="@+id/tv_distance"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="距离"
android:textColor="#99000000" android:textColor="#99000000"
android:textSize="14dp" android:textSize="14dp"
app:layout_constraintBottom_toBottomOf="@+id/viewname" app:layout_constraintBottom_toBottomOf="@+id/viewname"
...@@ -61,7 +60,6 @@ ...@@ -61,7 +60,6 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="120dp" android:layout_height="120dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:src="@mipmap/icon_card6"
app:layout_constraintEnd_toEndOf="@+id/textView5" app:layout_constraintEnd_toEndOf="@+id/textView5"
app:layout_constraintStart_toStartOf="@+id/viewname" app:layout_constraintStart_toStartOf="@+id/viewname"
app:layout_constraintTop_toBottomOf="@+id/viewname" app:layout_constraintTop_toBottomOf="@+id/viewname"
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<color name="color_E6E6E6">#E6E6E6</color> <color name="color_E6E6E6">#E6E6E6</color>
<color name="color_555">#555555</color> <color name="color_555">#555555</color>
<color name="color_8F6D21">#8F6D21</color> <color name="color_8F6D21">#8F6D21</color>
<color name="color_505050">#505050</color>
<color name="color_0000">#00000000</color> <color name="color_0000">#00000000</color>
<color name="color_60000000">#60000000</color> <color name="color_60000000">#60000000</color>
<color name="color_2B3238">#2B3238</color> <color name="color_2B3238">#2B3238</color>
......
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