1

我有一个 winform 客户端,其中包含一个 webbrowser 控件。在 Visual Studio 中使用 C#,并运行 MSSQL 以实现持久性。我的目标是:

获取存储在我的 MSSQL 中的数据(通过 DBML/DataContext 处理),并在谷歌地图(Javascript v3)上为我在数据库中获得的每个地址显示一个标记。

现在我的应用解决方案中有一个 HTML 文件,其中包含用于显示这样的 Google 地图的 JS 代码(我们称之为 mymap.html):

var map;
var _geoLocationsArr = [
    ["Tranehavevej 10, 2450", "Fiberby"],
    ["Tranehavevej 8, 2450", "Fiberby"],
    ["Tranehavevej 6, 2450", "Fiberby"],
    ["Tranehavevej 4, 2450", "Fiberby"],
    ["Johan Kellers Vej 27, 2450", "Service"],
    ["Johan Kellers Vej 25, 2450", "Service"],
    ["Johan Kellers Vej 23, 2450", "Service"],
    ["Johan Kellers Vej 21, 2450", "Service"],
    ["Johan Kellers Vej 24, 2450", "Potentiel"]
        ];
        var customIcons = {
            Fiberby: {
                icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png',
                shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png',
                title: 'Fiberby'
            },
            Service: {
                icon: 'http://labs.google.com/ridefinder/images/mm_20_yellow.png',
                shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png',
                title: 'Service'
            },
            Unknown: {
                icon: 'http://labs.google.com/ridefinder/images/mm_20_gray.png',
                shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png',
                title: 'Ukendt'
            }
        };
        var geocoder;

        function initialize(lat, lng) {
            geocoder = new google.maps.Geocoder();
            var myLatlng = new google.maps.LatLng(lat, lng);
            var mapOptions = {
                zoom: 14,
                center: myLatlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
            //geocodeMe();
        }

        function toggle() {
            initialize(55.66718, 12.5411);
            for (var i = 0; i < _locations.length; i++) {
                var item = _locations[i];
                var latlng = new google.maps.LatLng(item[0], item[1]);
                var icon = customIcons[_locations[i][1]] || {};
                var marker = new google.maps.Marker({
                    position: latlng,
                    map: map,
                    icon: icon.icon,
                    shadow: icon.shadow,
                    title: "Hello World! " + i
                });
            }
        }

        function toggleGeocodes() {
            initialize(55.66718, 12.5411);
            for (var i = 0; i < _geoLocationsArr.length; i++) {
                geocodeMe(_geoLocationsArr[i][0], _geoLocationsArr[i][1]);
            }
        }

        function geocodeMe(address, type) {
            geocoder.geocode({
                'address': address
                },
                function(result, status){
                    if(status == google.maps.GeocoderStatus.OK){
                        map.setCenter(result[0].geometry.location);
                        var icon = customIcons[type] || customIcons['Unknown'];
                        var marker = new google.maps.Marker({
                            map: map,
                            icon: icon.icon,
                            shadow: icon.shadow,
                            position: result[0].geometry.location,
                            title: icon.title
                            });
                        } else{
                        alert('Geocode was not successful for the following reason: ' + status);
                    }
            });
        }
    </script>
</head>
<body onload="initialize(55.665919, 12.55482)">
    <div id="map_canvas" style="width: 100%; height: 100%"></div>
</body>

当我在我的 winforms 中点击“地理切换”按钮时,它会在地图上显示 _geoLocationsArr 中每个地理编码地址的标记。一切都很完美。

但!现在,我想用从我的 winform 生成的数据替换 _geoLocationsArr,我的 winform 在其中创建标记数据(xml 或字符串数​​组,对我来说什么格式并不重要,重要的是它可以从winform 到 HTML 页面中的 JS)。

那么,如何在我的 WinForm 中创建数据,以及当单击调用 JS html 页面的按钮时,使用表单创建的数据作为参数?因此,当调用函数 toogleGeocodes() 时,它会将数据作为参数作为函数 toggleGeocodes(_myGeoLocationsArr[]) ,其中 _myGeoLocationsArr[] 是 winform 在调用函数时创建并作为参数发送的内容。

4

0 回答 0