Javascript 谷歌地图与Routeplanner don';t正确显示标记和信息窗口

Javascript 谷歌地图与Routeplanner don';t正确显示标记和信息窗口,javascript,google-maps,google-maps-api-3,directions,Javascript,Google Maps,Google Maps Api 3,Directions,我找了一整天,但没有找到解决办法。如果有人看到我的错误,我会很高兴。我尝试显示一个带有标记的地图,单击它会打开信息窗口。这个我以前做过很多次。 在信息窗口中,我想显示切换到Google进行路由规划的选项 定位和链接到Google的功能非常好,但是onload地图显示时没有显示标记,而是直接显示信息窗口并打开 你可以在这里看到地图: 这是我目前的代码: <div class="mapwrapper"> <div id="map_canvas"></div> &

我找了一整天,但没有找到解决办法。如果有人看到我的错误,我会很高兴。我尝试显示一个带有标记的地图,单击它会打开信息窗口。这个我以前做过很多次。 在信息窗口中,我想显示切换到Google进行路由规划的选项

定位和链接到Google的功能非常好,但是onload地图显示时没有显示标记,而是直接显示信息窗口并打开

你可以在这里看到地图:

这是我目前的代码:

<div class="mapwrapper">
<div id="map_canvas"></div>

<!-- STARTING MAP DEFINITION -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language=de"></script>
<script type="text/javascript">

    var map;
    var start = new google.maps.LatLng(50.6472671, 8.4210159);
    var geocoder;
    geocoder = new google.maps.Geocoder();

    // Initalize your map
    function initialize() {
        var mapOptions = {
            zoom:16,
            scrollwheel: false,
            panControl: true,
            draggable: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: start
        };
        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    }

    // Collect entered data and open Google Maps in a new browser tab
    function showRoute() {
        var start = document.getElementById("address").value;
        var dest_url = "http://maps.google.de/maps?saddr="+start+"&daddr="+destination;
        window.open(dest_url, '_blank');
    }

    // Define infobox widget
    function codeAddress() {
        var marker = new google.maps.Marker({
            map: map,
            position: new google.maps.LatLng(50.6472671, 8.4210159 ),
            title:"Info Window title goes here"
        });

        var address = destination;
        geocoder.geocode( { 'address': address }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var coordInfoWindow = new google.maps.InfoWindow({
                    content: "<h2>Your Way to Us</h2><p>Enter your location<br>and press 'FIND'</p><input id='address' type='textbox' value='' style='border: 1px solid #f0f0f0;-webkit-border-radius: 8px;-moz-border-radius: 8px;border-radius: 8px;'> <input type='button' value='FIND' onClick='showRoute();'>",
                    map: map,
                    position: results[0].geometry.location
                });
            } else {
                alert("Geocode not available: " + status);
            }
        });
        google.maps.event.addListener(marker, 'click', function() {
            coordInfoWindow.open(map,marker);
        });
    }

    // Automatic geo localisation
    function codeLatLng() {
        if(navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function(position) {
                var pos = new google.maps.LatLng(position.coords.latitude,
                        position.coords.longitude);

                geocoder.geocode({'latLng': pos}, function(results, status) {

                    if (status == google.maps.GeocoderStatus.OK) {
                        if (results[1]) {
                            document.getElementById("address").value = results[1].formatted_address;
                        } else {
                            // alert("No results found");
                        }
                    } else {
                        // alert("Geocoder failed due to: " + status);
                    }
                });

            }, function() {
                //
            });
        }
    }

    // DO NOT CHANGE CODE ABOVE!

    // Change custom parameters starting from here:
    var destination = "Mainzer Dom, Markt, Mainz"; // destination, your address
    document.getElementById('map_canvas').style.width = '100%'; // map width
    document.getElementById('map_canvas').style.height = '700px'; // map height
    initialize();
    codeAddress();
    codeLatLng();


</script>
<!-- END OF MAP DEFINITION -->

</div>

var映射;
var start=new google.maps.LatLng(50.6472671,8.4210159);
var地理编码器;
geocoder=新的google.maps.geocoder();
//初始化你的地图
函数初始化(){
变量映射选项={
缩放:16,
滚轮:错误,
泛控制:对,
可拖动:错误,
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:开始
};
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
}
//收集输入的数据并在新的浏览器选项卡中打开谷歌地图
函数showRoute(){
var start=document.getElementById(“地址”).value;
var dest_url=”http://maps.google.de/maps?saddr=“+start+”&daddr=“+destination;
打开(dest_url,'u blank');
}
//定义信息框小部件
函数代码地址(){
var marker=new google.maps.marker({
地图:地图,
位置:新google.maps.LatLng(50.6472671,8.4210159),
标题:“信息窗口标题在此处”
});
var地址=目的地;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var coordinfo window=new google.maps.InfoWindow({
内容:“您前往美国的方式输入您的位置
并按“查找”

”, 地图:地图, 位置:结果[0]。几何体。位置 }); }否则{ 警报(“地理代码不可用:+状态”); } }); google.maps.event.addListener(标记'click',函数(){ 坐标信息窗口。打开(地图、标记); }); } //自动地理定位 函数codeLatLng(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(函数(位置){ var pos=新的google.maps.LatLng(position.coords.latitude, 位置坐标经度); geocoder.geocode({'latLng':pos},函数(结果,状态){ if(status==google.maps.GeocoderStatus.OK){ 如果(结果[1]){ document.getElementById(“地址”).value=results[1]。格式化的\u地址; }否则{ //警报(“未发现结果”); } }否则{ //警报(“地理编码器因“+状态”而失败); } }); },函数(){ // }); } } //不要更改上面的代码! //从此处开始更改自定义参数: var destination=“Mainzer Dom,Markt,Mainz”//目的地,你的地址 document.getElementById('map_canvas')。style.width='100%';//地图宽度 document.getElementById('map_canvas')。style.height='700px';//地图高度 初始化(); 代码地址(); codeLatLng();
我做错了什么,有人知道吗?我会感谢你的帮助, 非常感谢


托马斯

好吧,既然我在这篇文章上没有得到帮助,我就自己动手;-) 就我不是GoopleMaps API专家而言,我找到了一个适合我的项目的解决方案。我现在错过了自动地理定位,但marker和infowindow现在的行为与我预期的一样。 我发布了这段代码,希望它能帮助有类似问题的人。 这是:

函数初始化(){
变量映射选项={
中心:新google.maps.LatLng(49.9988999,8.2717569),
缩放:16,
mapTypeId:google.maps.mapTypeId.ROADMAP,
滚轮:错误,
泛控制:对,
可拖动:错误
};
var map=new google.maps.map(document.getElementById(“map_canvas”),
地图选项);
var marker=new google.maps.marker({
地图:地图,
位置:新google.maps.LatLng(49.9988999,8.2717569),
标题:“信息窗口标题在此处”
});
//根据地图高度和网页设计调整信息窗口的样式
var contentString=''+
'信息窗口标题也在此处'+
''+
“

Examplestreet 6
12345 ExampleCity

”+ '输入您的位置
'+ ''+ ''+ ''; var infowindow=new google.maps.infowindow({ 内容:contentString }); google.maps.event.addListener(标记'click',函数(){ 信息窗口。打开(地图、标记); }); } google.maps.event.addDomListener(窗口“调整大小”,初始化); google.maps.event.addDomListener(窗口“加载”,初始化)
html{
身高:100%;
}
身体{
身高:100%;
保证金:0;
填充:0;
}
#sec4{
宽度:100%;
身高:50%;
}
#地图{
宽度:100%;高度:600px;
}


信息窗口有什么问题?您希望在
http://maps.google.com
?请在一个问题中只问一个问题。感谢您的建议-然后让我们关注我的期望:我期望标记在加载时出现-带有一个隐藏的信息窗口,在单击标记时显示。但是,使用该代码,映射将打开infowindow,但不显示任何标记。即使我关闭信息窗口,也没有