首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java-script中传递对象数组?

如何在java-script中传递对象数组?
EN

Stack Overflow用户
提问于 2016-05-12 04:37:26
回答 1查看 123关注 0票数 0

在google map中,我尝试显示我的病人位置,我可以通过这个函数获得我的病人位置,但我不知道如何将它链接到下一个函数,以便在google map中显示我的病人。

代码语言:javascript
运行
复制
 function getPoints() {
    $.ajax({
        type: "POST",
        url: "Patient.asmx/GetPatient",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var Patientlocation = response.d;
            $.each(Patientlocation, function (index, Patientlocation) {
                $('#output').append('new google.maps.LatLng(' + Patientlocation.lat + ' ' + Patientlocation.lng + ')<br/>');
            });
        },
        failure: function (msg) {
            $('#output').text(msg);
        }
    });
}

这是默认的google地图,我必须把地图对象从上面的函数传给它,你能帮我吗?

代码语言:javascript
运行
复制
<script>

    // This example requires the Visualization library. Include the libraries=visualization
    // parameter when you first load the API. For example:
    // <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=visualization">

    var map, heatmap;
    function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
            zoom: 13,
            center: { lat: 34.0475, lng: -118.434 },
            mapTypeId: google.maps.MapTypeId.SATELLITE
        });

        heatmap = new google.maps.visualization.HeatmapLayer({
            data: getPoints(),
            map: map
        });
    }

    function toggleHeatmap() {
        heatmap.setMap(heatmap.getMap() ? null : map);
    }

    function changeGradient() {
        var gradient = [
      'rgba(0, 255, 255, 0)',
      'rgba(0, 255, 255, 1)',
      'rgba(0, 191, 255, 1)',
      'rgba(0, 127, 255, 1)',
      'rgba(0, 63, 255, 1)',
      'rgba(0, 0, 255, 1)',
      'rgba(0, 0, 223, 1)',
      'rgba(0, 0, 191, 1)',
      'rgba(0, 0, 159, 1)',
      'rgba(0, 0, 127, 1)',
      'rgba(63, 0, 91, 1)',
      'rgba(127, 0, 63, 1)',
      'rgba(191, 0, 31, 1)',
      'rgba(255, 0, 0, 1)'
    ]
        heatmap.set('gradient', heatmap.get('gradient') ? null : gradient);
    }

    function changeRadius() {
        heatmap.set('radius', heatmap.get('radius') ? null : 20);
    }

    function changeOpacity() {
        heatmap.set('opacity', heatmap.get('opacity') ? null : 0.2);
    }

    // Heatmap data: 500 Points
    function getPoints1() {
        return [
      new google.maps.LatLng(34.0482551, -118.434),
      new google.maps.LatLng(34.0442551, -118.444),
      new google.maps.LatLng(34.0422551, -118.454),
      new google.maps.LatLng(34.0402551, -118.464),
      new google.maps.LatLng(34.0502551, -118.474),
      new google.maps.LatLng(34.0522551, -118.484)
    ];
    }
</script>
<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=visualization&callback=initMap">
</script>

这是JsonFile

代码语言:javascript
运行
复制
<ArrayOfPatientLocation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<PatientLocation>
 <lat>34.0369842</lat>
 <lng>-118.23060729999997</lng>
</PatientLocation>
<PatientLocation>
 <lat>34.0369842</lat>
 <lng>-118.22060729999997</lng>
</PatientLocation>
<PatientLocation>
 <lat>34.0369842</lat>
 <lng>-118.24060729999997</lng>
</PatientLocation>
<PatientLocation>
 <lat>34.0369842</lat>
 <lng>-118.24060729999997</lng>
</PatientLocation>
</ArrayOfPatientLocation>
EN

回答 1

Stack Overflow用户

发布于 2016-05-12 04:58:09

我不熟悉Google Maps API,也没有对其进行测试,但我认为这样的东西应该可以工作。

首先,修改initMap函数以接受患者位置对象数组,而不是调用函数返回硬编码列表:

代码语言:javascript
运行
复制
// modify initMap to accept an array of location objects
function initMap(patientLocations) {
    map = new google.maps.Map(document.getElementById('map'), {
        zoom: 13,
        center: { lat: 34.0475, lng: -118.434 },
        mapTypeId: google.maps.MapTypeId.SATELLITE
    });

    heatmap = new google.maps.visualization.HeatmapLayer({
        data: patientLocations,
        map: map
    });
}

然后,修改您的getPoints ajax函数,将从该API返回的位置列表映射到google地图位置对象,并将其传递给initMap

代码语言:javascript
运行
复制
function getPoints() {
    $.ajax({
        type: "POST",
        url: "Patient.asmx/GetPatient",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var patientlocations = response.d;
            // transform array of JSON objects into google maps location objects
            patientlocations = $.map(Patientlocations, function(patentLocation) {
                return new google.maps.LatLng(patentLocation.lat, patentLocation.lng);
            });

            // pass modified locations into initMap()
            initMap(patientLocations);
        },
        failure: function (msg) {
            $('#output').text(msg);
        }
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37172816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档