0

Google マップ V2 から V3 への移行プロジェクトに取り組んでおり、次のコードを書きましたが、エラーが発生して問題を解決できません。

Googleマップの間違った方法を使用していますか?

このコードのどこが間違っていますか?

<div id="map_canvas" style="width: 300px; height: 225px; font-family:arial; font-size:10px;"></div>
<?php
$map = getMap();
echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map );


function getMap()
{
    $mapKey = 'MYKEY';
    $_script = '
        <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key='. $mapKey .'&sensor=false"></script>
        <script type="text/javascript">
            //<![CDATA[
            var map = null;
            var geocoder = null;

            // call initialize function
            initialize( $_ADDRESS );

            // initialize map

            function initialize() 
            {
                var map = new google.maps.Map(document.getElementById("map_canvas"), {
                center: new google.maps.LatLng(37.4419, -122.1419),
                zoom: 13,
                mapTypeId: google.maps.MapTypeId.ROADMAP
                });             
                geocoder = new google.maps.Geocoder();

                // call show Address
                showAddress( address );
            }

            // show address
            function showAddress(address)
            {
                if (geocoder)
                {
                    geocoder.getPosition( address, function(point)
                    {
                        if (!point)
                        {
                            alert(address + " not found");
                        }
                        else
                        {
                            map.setCenter(point, 13);
                            var marker = new google.maps.Marker(point);
                            map.addOverlay(marker);
                            //marker.openInfoWindowHtml(address);
                        }
                    });
                }
            }
            //]]>
    </script>';
    return $_script;
}
?>

何かアイデアはありますか?ありがとう

4

2 に答える 2

1

これらの回答は、最初に JavaScript の基礎を扱い、次に Google Maps API の使用を扱うものとして分割しました。

Maps API を使用したことがないため、V2 についてコメントすることはできませんが、V3 でどのように作業しているかを見て、これはあなたが探しているものを実行すると思います...

<div id="map_canvas" style="width: 300px; height: 225px; font-family:arial; font-size:10px;"></div>
<?php
$map = getMap();
echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map );


function getMap()
{
    $mapKey = 'MYKEY';
    $_script = '
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script>
        <script type="text/javascript">
            //<![CDATA[
            var map = null;
            var geocoder = null;

            // call initialize function
            initialize( "$_ADDRESS" );

            // initialize map
            function initialize( address ) 
            {
                map = new google.maps.Map(document.getElementById("map_canvas"), {
                center: new google.maps.LatLng(37.4419, -122.1419),
                zoom: 13,
                mapTypeId: google.maps.MapTypeId.ROADMAP
                });             
                geocoder = new google.maps.Geocoder();

                // call show Address
                showAddress( address );
            }

            // show address
            function showAddress(address)
            {
                if (geocoder)
                {
                    geocoder.geocode( { "address": address }, function( results, status )
                    {
                        if ( status == google.maps.GeocoderStatus.OK )
                        {
                            position = results[0].geometry.location;
                            map.setCenter(position, 13);
                            var marker = new google.maps.Marker({ map: map, position: position });
                        }
                        else
                        {
                            alert(address + " not found");
                        }
                    });
                }
            }
            //]]>
    </script>';
    return $_script;
}
?>

そうは言っても、私は str_replace を JavaScript に直接質問します。そのデータのソースを信頼できますか? そうでない場合は、その文字列を JavaScript に挿入する前にその文字列をサニタイズする方法を調べる必要があります。そうしないと、サイトにコードを挿入できるようになります。

于 2013-11-13T14:02:51.050 に答える
0

あなたが持っている基本的なJavaScriptの問題を見ると...

JavaScript に置き換える文字列を引用符で囲んでみてください

echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map );

なります:

echo $map = str_replace('$_ADDRESS', "'MYADDRESS'", $map );

そうすれば、JavaScript のアドレスを含む文字列が適切に引用されます。

また、初期化関数でアドレスを受け取ることができることを確認してください。

function initialize() 

なります:

function initialize( address ) 

最後に、「初期化」で値を割り当てるときに「マップ」を再宣言しないでください。そうしないと、その関数にのみ存在する別の変数を参照しています。

var map = new google.maps.Map(document.getElementById("map_canvas"), {

なります:

map = new google.maps.Map(document.getElementById("map_canvas"), {
于 2013-11-13T09:13:04.310 に答える