2015-04-22 2 views
0

Я работаю над созданием страницы с использованием html и javascript. У меня есть файл json, который доказывает входные данные для некоторого содержимого, которое мне нужно. Что я пытаюсь сделать, так это настроить адресную переменную так, чтобы API-интерфейс google отображался на моей странице.Добавление строк в javascript

<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var geocoder; 
    var map; 
    var address = cmpyJson[jobCmpyID].company_name+" Company, "+locJson[jobLocID].location_name; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var myOptions = { 
     zoom: 11, 
     center: latlng, 
    mapTypeControl: true, 
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
    navigationControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    if (geocoder) { 
     geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) { 
      map.setCenter(results[0].geometry.location); 

      var infowindow = new google.maps.InfoWindow(
       { content: '<b>'+address+'</b>', 
        size: new google.maps.Size(150,50) 
       }); 

      var marker = new google.maps.Marker({ 
       position: results[0].geometry.location, 
       map: map, 
       title:address 
      }); 
      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.open(map,marker); 
      }); 

      } else { 
      alert("No results found"); 
      } 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
    } 
</script> 
</head> 
<body style="margin:0px; padding:0px;" onload="initialize()"> 
<div id="map_canvas" style="width:100%; height:200px;"></div> 
</body> 
</html> 

выше является частью кода. переменная адрес должен выглядеть

var address= "google Company, Austin, TX" 

для Google, чтобы признать его должным образом. если я знаю, что json возвращает именно то, что я спрашиваю, что может быть проблемой здесь? как я могу это исправить?

обновлен, чтобы облегчить некоторые недоумения.

, когда я просмотреть исходный код на моем сайте, я вижу, что возвращаемые значения являются строками ...

<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var geocoder; 
    var map; 
    var address =Oracle+" Company, "+San Francisco, CA; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var myOptions = { 
     zoom: 11, 
     center: latlng, 
    mapTypeControl: true, 
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
    navigationControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    if (geocoder) { 
     geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) { 
      map.setCenter(results[0].geometry.location); 

      var infowindow = new google.maps.InfoWindow(
       { content: '<b>'+address+'</b>', 
        size: new google.maps.Size(150,50) 
       }); 

      var marker = new google.maps.Marker({ 
       position: results[0].geometry.location, 
       map: map, 
       title:address 
      }); 
      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.open(map,marker); 
      }); 

      } else { 
      alert("No results found"); 
      } 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
    } 
</script> 
</head> 
<body style="margin:0px; padding:0px;" onload="initialize()"> 
<div id="map_canvas" style="width:100%; height:200px;"></div> 
</body> 
+0

это очень неясно. Как заполняются cmpyJson, Company и locJson? что они содержат? какие результаты вы фактически получаете в переменной адреса. Здесь никого не достаточно, чтобы помочь вам. Возможно, ваш код на jsfiddle поможет показать больше контекста. Также - какие символы {{}}? эти недопустимые объекты javascript ... –

+0

@AllanNienhuis извините. Я поместил всю карту Google в часть кода, а также добавил исходную страницу. – o0tomato0o

+0

похоже, что ваш язык шаблонов путает вещи. Исходный html, который вы поставляете, на самом деле не является html, это какой-то язык шаблонов. cmpyJson - это не переменная, определенная в javascript - вероятно, кто-то определен на стороне сервера в вашей структуре шаблонов. Какой язык шаблонов вы используете для создания своего html? –

ответ

0

при условии, что все эти переменные существуют, следующая строка должна быть:

var address = cmpyJson[jobCmpyID].company_name+" Company, "+locJson[jobLocID].location_name; 

Я просто удалил все фигурные скобки, чтобы сделать его синтаксически правильным.

+0

Я только что отредактировал исходное сообщение и добавил исходную страницу страницы. Если я не разместил {{}} вокруг них, он просматривается на исходной странице как cmpyJson [jobCmpyID] .company_name, однако, если у меня {{}} вокруг него, я получаю фактические строки назад. – o0tomato0o

0

Если адрес должен производить строку, и тянуть в части из объекта cmpJson, то сделать это:

var address =cmpyJson[jobCmpyID].company_name +" Company, "+ 
        locJson[jobLocID].location_name; 

Вам не нужны {{}} вокруг ссылки на объект JSON. Кроме того, если вы планируете передать это в Google, вам необходимо его закодировать.

+0

Я просто показал часть карты Google на странице, а также ее исходную страницу. , если у меня есть {{}} вокруг имени_компании и location_name, на исходной странице отображаются фактические строковые значения, но если у меня нет {{}}, он отображается как cmpyJson [jobCmpyID] .company_name. поэтому я предполагал, что {{}} получает строку. – o0tomato0o

Смежные вопросы