谷歌地图Api检查地点是否在路线上

时间:2014-01-07 15:05:40

标签: javascript google-maps

我使用Google地图制作了两个地方之间的路线。这很好。

但是我也有一个数据库,里面有不同的道路 我的国家。我喜欢在生成的路线上显示它们。是的地方 不是这条路线,不需要显示。

我的包含互动点的数据库包含纬度和经度坐标。

我如何检查他们是否在我的路线上?大约有30或40个有趣 指向我的数据库。

// set request
var request = {
    origin: initialLocation,
    destination: destination,               
    travelMode: google.maps.TravelMode.DRIVING
};

 // make route
directionsService.route(request, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

      // set route
      directionsDisplay.setDirections(response);


    }

});         

更新 构建新功能“isLocationOnEdge”。但是当他们不在路上时,检查会运行标记:

// get flitsers on the route
function getFlitsersOnRoute(){

    // set request
    var request = {
        origin: current_location,
        destination: $('#gegevens').html(),               
        travelMode: google.maps.TravelMode.DRIVING
    };  

    // make route
    directionsService.route(request, function(response, status) {

        // isLocationOnEdge
        var isLocationOnEdge = google.maps.geometry.poly.isLocationOnEdge;      
        var coords = response.routes[0].overview_path;
        var image = base_url+'external/afbeeldingen/google_markers/flitser.png';

        // get flitsers
        $.ajax({
            type: "POST",
            async:false,
            url: base_url+"advies/get/9",
            success: function (data) {
                var result = jQuery.parseJSON(data);    

                // loop trough flitsers
                $.each(result.flitsers.m, function(i, item) {

                    // latitude longitude
                    var latlng = item["@attributes"].gps.split(",");

                    // make google latlng
                    var myLatlng = new google.maps.LatLng(latlng[0],latlng[1]);                     

                    if (myLatlng,coords)
                    {
                        // set and define the marker 
                        var marker = new google.maps.Marker({
                            position: myLatlng,
                            map: map,
                            size: new google.maps.Size(15, 15),
                            icon: image,
                            title: 'Flitser'
                        });     
                    }

                });
            }
        });

    });
}

1 个答案:

答案 0 :(得分:1)

在Google Maps API请求中包含几何库:

http://maps.googleapis.com/maps/api/js?v=3.exp& libraries=geometry &sensor=TRUE_OR_FALSE

的伪代码:

// Make isLocationOnEdge easier to access
var isLocationOnEdge = google.maps.geometry.poly.isLocationOnEdge;

for (var i = 0; i < interestingPlaces.length; i++) {
    if (isLocationOnEdge(interestingPlaces[i],
                         response.routes[0].overview_path))
        {
            // Do something with interestingPlaces[i]
        }
}

Google maps documentation for isLocationOnEdge()