【问题标题】:geocoder api radar search and multiple markers issuegeocoder api 雷达搜索和多个标记问题
【发布时间】:2017-05-11 05:02:53
【问题描述】:

我的脚本如下。我必须搜索密码,并且根据搜索我必须在地图上显示位置

问题 1:如果我有 2 个相同密码的结果,那么地图上也会出现一个标记。我想显示单独的标记。

问题 2:我也想使用密码进行雷达搜索。就像如果 pincode 07201 和 07202 非常靠近区域,那么我应该得到两者的结果。我尝试在回复中使用半径,但它不起作用

<script>
      var map;
      <!-- var marker; -->
    function initialize() 
    { 
        var mapOptions = {
        center: new google.maps.LatLng('40.71338', '-74.193246'),
        zoom: 8,
        scrollwheel: false,
        disableDefaultUI: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
     };

      map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);

      marker = new google.maps.Marker({
                    position: new google.maps.LatLng(40.71338, -74.193246),
                    map: map,
                });


     }



    jQuery('#searchPincodeForm').submit(function (event) {
       event.preventDefault();

       var geocoder = new google.maps.Geocoder();
        var search_val=$('#country').val();

        jQuery.ajax({
                type: 'post',
                data:{
                    'pincode':search_val,                
                },
                url: 'searchPincode.php',           
                success:function(response){
                if(response != ''){

                $("#result").html(response).show();
                    geocoder.geocode({ 
                    'address': search_val }, function (results, status) {


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

                    var position = results[0].geometry.location;
                        map.setCenter(position);
                        marker.setPosition(position);

                }

                })
                } else{

                    $("#result").html("Sorry Dealer not available at this location. For more information please mail at info@movemaxoil.com").show();

                }
                }


            });
            });


     </script>

我从地理编码得到的响应:

{
    "results": [{
        "address_components": [{
                "long_name": "07108",
                "short_name": "07108",
                "types": ["postal_code"]
            },
            {
                "long_name": "Newark",
                "short_name": "Newark",
                "types": ["locality", "political"]
            },
            {
                "long_name": "Essex County",
                "short_name": "Essex County",
                "types": ["administrative_area_level_2", "political"]
            },
            {
                "long_name": "New Jersey",
                "short_name": "NJ",
                "types": ["administrative_area_level_1", "political"]
            },
            {
                "long_name": "United States",
                "short_name": "US",
                "types": ["country", "political"]
            }
        ],
        "formatted_address": "Newark, NJ 07108, USA",
        "geometry": {
            "bounds": {
                "northeast": {
                    "lat": 40.73179289999999,
                    "lng": -74.1830549
                },
                "southwest": {
                    "lat": 40.713114,
                    "lng": -74.21835
                }
            },
            "location": {
                "lat": 40.7235275,
                "lng": -74.197388
            },
            "location_type": "APPROXIMATE",
            "viewport": {
                "northeast": {
                    "lat": 40.73179289999999,
                    "lng": -74.1830549
                },
                "southwest": {
                    "lat": 40.713114,
                    "lng": -74.21835
                }
            }
        },
        "place_id": "ChIJK0xWNjlTwokRLb_3zFLt8zM",
        "types": ["postal_code"]
    }],
    "status": "OK"
}

【问题讨论】:

  • 如何将 pincode 转换为 lat long 值?
  • geocoder.geocode({ 'address': search_val
  • 如果你有两个不同的纬度值,不管它们之间的差异如何,你可以分别映射它们。
  • 是的,我得到了两个不同的值。但标记仅针对 1 个位置
  • ajax 的响应是什么,发布到?

标签: php jquery geocode


【解决方案1】:

所以问题就在这里:

var position = results[0].geometry.location;
map.setCenter(position);
marker.setPosition(position);

您的 ajax 响应中可能包含多个位置点,但在上面的代码中,您在这里只使用了第一个位置点 results[0].geometry.location。因此,您必须循环遍历所有结果数组,而不是 results[0],以便将多个点映射到您的标记上。

【讨论】:

猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多