【问题标题】:Drawing route on map, with multiple markers, CodeIgniter在地图上绘制路线,带有多个标记,CodeIgniter
【发布时间】:2017-03-01 13:45:04
【问题描述】:

我进行了搜索,但不幸的是没有找到相关的解决方案。我想通过使用 codeigniter 谷歌地图库来做到这一点。我正在关注这个 link 但它只是显示起点和终点,而不是像

那样创建多个引脚

这是用折线制作多个引脚,但我想要路由:

折线地图图片所示的多个针脚.. 是否可以用多个针脚获得多个方向 ??

我试过了,但我的伎俩行不通。我通过使用 while 循环进行了尝试,并在结束点之前增加了变量以使我的方向像

  1. 第一纬度,经度:起点
  2. 第二个纬度,经度:终点
  3. 第二个纬度,经度:起点
  4. 第三个纬度,经度:终点
  5. 第三个纬度,经度:起点
  6. 第四个纬度,经度:终点

但它只是为开始和结束方向制作第一个和最后一个结束点

这是我的控制器功能

##Load library
$this->load->library('googlemaps');

## Getting data from db
     $final_data['final_data'] = $this->Main_manager->getAllEmailLogsById($id);

     $email = $final_data['final_data'][0]['email'];
     $date = $final_data['final_data'][0]['date'];

     $file = 'assets/email_logs/'.$email.'-'.str_replace(' ','-',$date).'.txt';

     ## Getting lat long data from txt file
     $logData = file_get_contents($file); 
     $logData = json_decode($logData, true);

    $marker = array(); 
    $logs = count($logData['logs']);  
    $config['center'] = $final_data['final_data'][0]['lat'].','. $final_data['final_data'][0]['long'];
    $config['zoom'] = 'auto';

    $i=0;
    while($i<$logs-1):
        $config['position'] = $logData['logs'][$i]['lat'].','. $logData['logs'][$i]['long'];
        $config['infowindow_content'] = $logs['email'];
        $config['animation'] = 'DROP';
        $config['draggable'] = FALSE; 
        $config['directions'] = TRUE;
        $config['directionsStart'] =  $logData['logs'][$i]['lat'].','. $logData['logs'][$i]['long'];
        $i++;
        $config['directionsEnd'] = $logData['logs'][$i]['lat'].','. $logData['logs'][$i]['long'];
        $config['directionsDivID'] = 'directionsDiv'; 
    endwhile; 

    ## initialize the map
    $this->googlemaps->initialize($config);

    ##create map
    $final_data['map'] = $this->googlemaps->create_map();

    $this->load->view('administrator/header');
    $this->load->view('administrator/view_logs_detail', $final_data);

【问题讨论】:

标签: php codeigniter google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

您似乎需要使用google's DirectionsService。 此服务谷歌地图 API 密钥绘制路线 从here获取谷歌密钥登录谷歌账户并为您的项目生成密钥

Working Demo

HTML

<h1>Google Map direction service</h1>
<div id="map"></div>

CSS

html,
    body,
    #map {
        height: 100%;
        width: 100%;
        margin: 0px;
        padding: 0px
    }

JS:

var map;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var locations = [
    ['Shahrah-e-Faisal, Karachi, Pakistan', 24.8678, 67.0842, 1],
    ['Tariq Rd, Karachi, Pakistan', 24.8727, 67.0604, 2],
    ['Service Lane, Karachi, Pakistan', 24.8161, 67.0212, 3]
];

function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 10,
        center: new google.maps.LatLng(24.8678, 67.0842),
    });
    directionsDisplay.setMap(map);
    var infowindow = new google.maps.InfoWindow();
    var marker, i;
    var request = {
        travelMode: google.maps.TravelMode.DRIVING
    };
    for (i = 0; i < locations.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        });

        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
            }
        })(marker, i));

        if (i == 0) request.origin = marker.getPosition();
        else if (i == locations.length - 1) request.destination = marker.getPosition();
        else {
            if (!request.waypoints) request.waypoints = [];
            request.waypoints.push({
                location: marker.getPosition(),
                stopover: true
            });
        }

    }
    directionsService.route(request, function (result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result);
        }
    });
}
google.maps.event.addDomListener(window, "load", initialize);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    相关资源
    最近更新 更多