O mapa do Baidu é útil em projetos recentes. De modo geral, o mapa é exibido em uma interface inteira, mas quando eu desenho este produto, preencho as informações relevantes do projeto e selecione um local no mapa abaixo. É a localização do projeto.
O layout é mostrado na figura abaixo: (uma parte do mapa acima desliza para fora e uma parte do mapa não desliza)
Como as informações acima são preenchidas em uma tela, elas são usadas para aninhar MapView em Scrollview. Todos sabem que MapView pode deslizar, mas se estiver aninhado em Scrollview, porque MapView é um controle filho, o evento deslizante é controlado pelo pai. O contêiner Scrollview é consumido, então, quando você deseja puxar o mapa para baixo, é sempre um Scrollview de rolagem.
O que devo fazer? ? ?
Basta definir o ouvinte setOnMapTouchListener no BaiduMap. Ao tocar no BaiduMap, você pode interceptar o toque do Scrollview.
Por exemplo:
mBaiduMap.setOnMapTouchListener(new BaiduMap.OnMapTouchListener() {
@Override
public void onTouch(MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
scrollView.requestDisallowInterceptTouchEvent(false);
} else {
scrollView.requestDisallowInterceptTouchEvent(true);
}
}
});
Isso resolve perfeitamente o conflito de deslizamento. Quando você arrasta o dedo no mapa, pode arrastar o mapa como quiser.