Mapa do Android Baidu desenha pontos e trilhas

1. Título

Mapa do Android Baidu desenha pontos e trilhas

2. Meio Ambiente

win10 AndroidStudio

Três, implementação de código

Observação: a parte comentada é que eu corrigi os dados diretamente antes, apenas para ver se o código pode ser executado normalmente e ver se posso obter os resultados que esperava. Sem comentários, eu uso strings JSON como suporte de dados.

Desenhe a parte do ponto marcado:

package com.example.adressandtrace;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import org.json.JSONException;
import java.util.List;

import Entity.Address;

public class MainActivity extends AppCompatActivity {
    
    
    private MapView mMapView = null;
    private BaiduMap mBaiduMap = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
        //定义Maker坐标点
//        mBaiduMap= mMapView.getMap();
//        LatLng point = new LatLng(39.963175, 116.400244);
构建Marker图标
//        BitmapDescriptor bitmap = BitmapDescriptorFactory
//                .fromResource(R.drawable.icon_marka);
构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions()
                .position(point)
                .icon(bitmap);
//        Log.v("MY1","Has Done");
//        OverlayOptions option = new MarkerOptions().icon(bitmap).position(point);
在地图上添加Marker,并显示
//        Log.v("MY2","Has Done");
//        mBaiduMap.addOverlay(option);
//        Log.v("MY3","Has Done");


        Intent intent = getIntent();
        String jsonString = intent.getStringExtra("jsonString");
        Log.i("jsonString",jsonString);
        Log.i("jsonString","这是绘制点activity");
        JieXiJson jieXiJson = new JieXiJson();
        List<Address> list = null;
        try {
    
    
            list = jieXiJson.getAddress(jsonString);
            Log.i("jsonString",list.toString());
            Log.i("jsonString","map输出后的检查语句");
        } catch (JSONException e) {
    
    
            e.printStackTrace();
        }
//        定义Maker坐标点
        mBaiduMap= mMapView.getMap();
        if(list!= null ){
    
    
            for(Address address : list){
    
    
                double latitude = Double.valueOf(address.getLatitude());
                double longitude = Double.valueOf(address.getLongitude());
                LatLng point = new LatLng(latitude, longitude);
                System.out.println(latitude);
                BaiduMap mBaiduMap = mMapView.getMap();
                //定义Maker坐标点
//        LatLng point = new LatLng(27.904198, 112.930552);七栋比较准确的位置
//        LatLng point = new LatLng(27.901332, 112.92163);
                //构建Marker图标
                BitmapDescriptor bitmap = BitmapDescriptorFactory
                        .fromResource(R.drawable.icon_gcoding);
                //构建MarkerOption,用于在地图上添加Marker
                OverlayOptions option = new MarkerOptions()
                        .position(point)
                        .icon(bitmap);
                //在地图上添加Marker,并显示
                mBaiduMap.addOverlay(option);
            }

        }else{
    
    
            Toast.makeText(MainActivity.this, "没有获取到位置信息或者位置数据库为空!", Toast.LENGTH_LONG).show();
        }



    }
    @Override
    protected void onResume() {
    
    
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
    
    
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
}


Parte do traço:

package com.example.adressandtrace;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.Overlay;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolylineOptions;
import com.baidu.mapapi.model.LatLng;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import Entity.Address;

public class TraceActivity extends AppCompatActivity {
    
    
    private MapView mMapView = null;
    private BaiduMap mBaiduMap = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
//        Intent intent = getIntent();
//        String jsonString = intent.getStringExtra("jsonString");
//        JieXiJson jieXiJson = new JieXiJson();
//        Address address = jieXiJson.getAddress(jsonString);
        定义Maker坐标点
//        mBaiduMap= mMapView.getMap();
//        double latitude = Double.valueOf(address.getLatitude());
//        double longitude = Double.valueOf(address.getLongitude());
//         LatLng point1 = new LatLng(latitude, longitude);
//        LatLng point1 = new LatLng(27.101299, 112.94076);
//        LatLng point2 = new LatLng(27.901299, 112.94076);
        Intent intent = getIntent();
        String jsonString = intent.getStringExtra("jsonString");
        JieXiJson jieXiJson = new JieXiJson();
        List<Address> list = null;
        try {
    
    
            list = jieXiJson.getAddress(jsonString);
            Log.i("jsonString",list.toString());
            Log.i("jsonString","map输出后的检查语句");
        } catch (JSONException e) {
    
    
            e.printStackTrace();
        }
        if(list != null){
    
    
            BaiduMap mBaiduMap = mMapView.getMap();
            //构建Marker图标
            BitmapDescriptor bitmap1 = BitmapDescriptorFactory
                    .fromResource(R.drawable.icon_marka);
            BitmapDescriptor bitmap2 = BitmapDescriptorFactory
                    .fromResource(R.drawable.icon_markb);
//构建MarkerOption,用于在地图上添加Marker
//        OverlayOptions option = new MarkerOptions()
//                .position(point)
//                .icon(bitmap);
            Log.v("MY1","Has Done");
            Address address1 = list.get(0);
            Address address2 = list.get(list.size()-1);
            double latitude1 = Double.valueOf(address1.getLatitude());
            double longitude1 = Double.valueOf(address1.getLongitude());
            LatLng point1= new LatLng(latitude1, longitude1);
            double latitude2 = Double.valueOf(address2.getLatitude());
            double longitude2 = Double.valueOf(address2.getLongitude());
            LatLng point2 = new LatLng(latitude2, longitude2);
            OverlayOptions option1 = new MarkerOptions().icon(bitmap1).position(point1);
            OverlayOptions option2 = new MarkerOptions().icon(bitmap2).position(point2);
//在地图上添加Marker,并显示
            Log.v("MY2","Has Done");
            mBaiduMap.addOverlay(option1);
            mBaiduMap.addOverlay(option2);
            Log.v("MY3","Has Done");
            List<LatLng> points = new ArrayList<LatLng>();
            for(Address address :list) {
    
    
                //定义Maker坐标点
//        LatLng point = new LatLng(27.904198, 112.930552);七栋比较准确的位置
                double latitude = Double.valueOf(address.getLatitude());
                double longitude = Double.valueOf(address.getLongitude());
                LatLng point = new LatLng(latitude, longitude);
                points.add(point);
            }
                //设置折线的属性
                OverlayOptions mOverlayOptions = new PolylineOptions()
                        .width(10)
                        .color(0xAAFF0000)
                        .points(points);
                //在地图上绘制折线
                //mPloyline 折线对象
                Overlay mPolyline = mBaiduMap.addOverlay(mOverlayOptions);

        }else{
    
    
            Toast.makeText(TraceActivity.this, "没有获取到位置信息或者位置数据库为空!", Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected void onResume() {
    
    
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
    
    
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
}


Quatro, capturas de tela do experimento

Este é o array json exibido na página do navegador após visualizar o local em tempo real (ou seja, os últimos dados no banco de dados).
json

Estes são os dados que localizo no exterior. Os dados são precisos e o erro é muito pequeno.
(PS: quando o emulador ativa a camada, o centro da tela é Pequim por padrão, então ao usar o emulador, você precisa saber onde está o local que você está posicionando e, em seguida, procurá-lo no mapa)
Mark Point



Esta é uma captura de tela experimental de desenhar uma trajetória. Como eu uso um servidor local para transferir dados, o telefone celular e o computador devem estar na mesma rede local para se conectar. A coleta de dados não é conveniente, então eu apenas insiro algumas informações de longitude e latitude no MySQL para simular. Portanto, se você tem um pequeno parceiro que precisa de uma demonstração das informações do local de armazenamento do banco de dados, é recomendável tentar um servidor ou serviço em nuvem. Este tipo de dados não precisa estar na mesma rede local e os dados pode ser carregado com tráfego direto.

Esta imagem mostra o período de tempo de entrada e o mapa Baidu mostra a trajetória do período de tempo correspondente.
Tempo

O ponto A na figura abaixo representa o ponto de partida, que é a localização da hora de início.
O ponto B representa o ponto final, que é a localização do tempo final.
Track

Se você tiver alguma dúvida, deixe uma mensagem para trocar!

Acho que você gosta

Origin blog.csdn.net/weixin_43752257/article/details/113041298
Recomendado
Clasificación