美文网首页
腾讯地图开发

腾讯地图开发

作者: 芒果加奶 | 来源:发表于2018-04-19 09:36 被阅读0次

    一、 开发环境

    react全家桶(react,react-router,redux)

    二、功能

    定位、省市地图切换、打点、周边搜索


    腾讯地图

    三、开发

    1、加载腾讯地图——利用script标签特性

    loadMapScript = () => {
        return new Promise(function(resolve, reject) {
          window.init = function() {
            resolve(window.qqMap);
          };
          var script = document.createElement("script");
          script.type = "text/javascript";
          script.src =
            "http://map.qq.com/api/js?v=2.exp&key=XXX&callback=init";
          script.onerror = reject;
          document.head.appendChild(script);
        });
      };
    
    init() {
        /*eslint-disable no-undef*/
        // 地图中心位置
        var myLatlng = new qq.maps.LatLng(40.22077, 116.23128);
        var myOptions = {
          zoom: 8,
          center: myLatlng
        };
        var qqMap = new qq.maps.Map(this.refs.mapcontainer, myOptions);
      }
    

    2、省市联动

     // 根据城市搜索地图
      searchMapWithCity(city) {
        let map = this.state.qqMap;
        //调用地址解析类
        let geocoder = new qq.maps.Geocoder({
          complete: function(result) {
            map.setCenter(result.detail.location);
          }
        });
        geocoder.getLocation(city);
      }
    

    3、打点

    // 腾讯地图地址解析
      searchMapLat(value) {
        let map = this.state.qqMap;
        let _this = this;
        // 地址和经纬度之间进行转换服务
        let geocoder = new qq.maps.Geocoder();
        geocoder.getLocation(value);
        this.clearOverlays(this.state.markers); //清除已有打点
        geocoder.setComplete(function(result) {
          console.log(result.detail.location);
          map.setCenter(result.detail.location);
          map.setZoom(20);
          let marker = new qq.maps.Marker({
            map: map,
            position: result.detail.location
          });
    
          let markers = [];
          markers.push(marker);
          _this.setState(
            {
              mapInfo: result.detail,
              markers: markers
            },
            () => {
              _this.searchMapNearBy(1, "交通");
            }
          );
        });
        geocoder.setError(function() {
          alert("请输入正确的地址!!!");
        });
      }
    

    4、周边搜索

    // 地图周边搜索
      searchMapNearBy(city, value) {
        //设置Poi检索服务,用于本地检索、周边检索
        var searchService = new qq.maps.SearchService({
          pageIndex: 1,
          pageCapacity: 5,
          autoExtend: false,
          complete: function(results) {
            let pois = results.detail.pois;
            console.log(posi)
          },
          //若服务请求失败,则运行以下函数
          error: function() {
            Message.error("周边搜索失败,请重新搜索");
          }
        });
        let myLatlng = _this.state.mapInfo.location;
        searchService.searchNearBy(value, myLatlng, 2000); //根据中心点坐标、半径和关键字进行周边检索。
      }
    

    相关文章

      网友评论

          本文标题:腾讯地图开发

          本文链接:https://www.haomeiwen.com/subject/xmqmhftx.html